文書番号: 310294 - 最終更新日: 2006年2月6日 - リビジョン: 2.1 Visual C++ 2005 または Visual C++ .NET を使用して、ユーザーとアプリケーションのデータを適切な場所に格納する Windows XP アプリケーションを記述する方法この記事は、以前は次の ID で公開されていました: JP310294 重要 : この資料には、レジストリの編集方法が記載されています。万一に備えて、編集の前には必ずレジストリをバックアップし、レジストリの復元方法を理解しておいてください。バックアップ、復元、および編集方法の詳細を参照するには、以下の「サポート技術情報」 (Microsoft Knowledge Base) をクリックしてください。
256986?
(http://support.microsoft.com/kb/256986/
)
Microsoft Windows レジストリの説明
注 : Microsoft Visual C++ 2005、Microsoft Visual C++ .NET 2003 および Microsoft Visual C++ .NET 2002 では、.NET Framework によって提供されるマネージ コード モデルとアンマネージ ネイティブ Windows コード モデルの両方がサポートされますが、この資料の情報は、アンマネージ Visual C++ コードにのみ適用されます。
目次概要
アプリケーションが機能するときには、ユーザーが作成したドキュメントとアプリケーションが作成したドキュメントの 2 種類のドキュメントを使用します。アプリケーションは SHGetFolderPath シェル関数を使用して、ユーザーとアプリケーション固有のデータを格納するのに有効なフォルダの場所を取得する必要があります。Windows XP アプリケーションでは、同じコンピュータを使用する複数のユーザーをサポートし、ユーザー間をすばやく切り替えることができるため、この作業は必須です。
この資料では、ユーザー データを適切な場所に格納する方法を以下の手順で説明しています。
必要条件この資料の手順に必要な、推奨するハードウェア、ソフトウェア、ネットワーク インフラストラクチャ、技術、知識、および Service Pack は次のとおりです。
Win32 アプリケーションを作成するVisual Studio を起動して、SavingData という名前の新しい Win32 アプリケーションを作成します。
[名前を付けて保存] オプションを [ファイル] メニューに追加する
標準の [上書き保存] ダイアログ ボックスを使用して、適切な場所をデフォルトの場所にするユーザーがアプリケーションの [上書き保存] (または [ファイルを開く]) ダイアログ ボックスを初めて表示するときは、そのダイアログ ボックスで、ユーザーのマイ ドキュメント フォルダ (または、イメージ データ用のマイ ピクチャやオーディオ ファイル用のマイ ミュージックなどのマイ ドキュメントのサブフォルダ) がデフォルトの場所になっている必要があります。注 : アプリケーションの物理的な場所は保証されないため、アプリケーション内部でパスをハードコードしないでください。たとえば、管理者がマイ ドキュメント フォルダをネットワーク上の場所に再配置することもあります。
適切なファイルの保存場所を確認する
ユーザーの前回の選択内容を記憶するその後、[上書き保存] (または [ファイルを開く]) ダイアログ ボックスを使用する場合、そのダイアログ ボックスでは、ユーザーが前回選択した場所をデフォルトの場所にすることをお勧めします。OPENFILENAME 構造体の内部で初期フォルダの場所を指定しないと、GetSaveFileName (および GetOpenFileName) は、マイ ドキュメント フォルダを指す、標準の [上書き保存] または [ファイルを開く] ダイアログ ボックスを表示します。さらに、ユーザーがそれ以前に、上記のダイアログ ボックスのいずれかを使用して、デフォルトではないフォルダを選択している場合、これらの関数は以前に使用したフォルダを自動的にデフォルトの場所にします。 ユーザーが最初にファイルの保存と読み込みを行うときに特定のフォルダの場所 (マイ ピクチャなど) を対象とする推奨事例をサポートし、その後ユーザーが選択した場所をデフォルトの場所にするには、ブール型の変数を使用します。この変数は、保存または開くという操作をユーザーが初めて実行したかどうかを監視します。
ユーザーの前回の選択内容を確認する
アプリケーション データを分類するマイ ドキュメント フォルダにアプリケーション固有のデータ (一時ファイル、ユーザー設定ファイル、アプリケーション構成ファイルなど) を格納すべきではありません。代わりに、Windows レジストリの適切な場所 (64 KB を超えない場合)、または有効な Application Data フォルダに配置されるアプリケーション固有のファイルのいずれかを使用します。互いのデータや設定を破損または上書きせずに、複数のユーザーが同じコンピュータを使用できるようにするためには、アプリケーション データを適切な場所に保存することが重要です。 アプリケーション データに最適な場所を判断するには、次のカテゴリを使用して、データを分類します。
アプリケーション データを適切な場所に格納するSHGetFolderPath 関数を使用して、適切な Application Data フォルダを取得します。アプリケーション データをこのフォルダに直接格納しないでください。代わりに、PathAppend 関数を使用して、SHGetFolderPath が返すパスにサブフォルダを追加します。サブフォルダのパスには、次のような表記法を使用します。
Company Name\Product Name\Product Version
この結果、パスは次のようになります。
\Documents and Settings\All Users\Application Data\My Company\My Product\1.0
適切な Application Data フォルダを使用するには、アプリケーション データのカテゴリに基づいて、適切な CSIDL 値を渡します。
レジストリを適切に使用する警告 : レジストリ エディタの使い方を誤ると、深刻な問題が発生することがあります。最悪の場合、オペレーティング システムの再インストールが必要になることがあります。マイクロソフトは、レジストリ エディタの誤用により発生した問題に関しては、一切責任を負わないものとします。レジストリ エディタは、自己の責任においてご使用ください。レジストリを使用して、少量のアプリケーション データを格納することもできます。データが 64 KB を超える場合は、Application Data フォルダを使用する必要があります。レジストリを使用してアプリケーション データを格納する場合、次のガイドラインに従います。
トラブルシューティング
関連情報
その他のよく参照される「サポート技術情報」 (Microsoft Knowledge Base) の資料については、次のマイクロソフト Web サイトの Visual C++ .NET Support Center にアクセスしてください。
Visual C++ .NET (2002) Support Center
Visual C++ .NET に関する一般的な情報については、次の Usenet ニュースグループを参照してください。
http://support.microsoft.com/default.aspx?xmlid=fh%3BEN-US%3Bvcnet (http://support.microsoft.com/default.aspx?xmlid=fh%3ben-us%3bvcnet) http://www.microsoft.com/japan/msdn/newsgroups/default.mspx?dg=microsoft.public.jp.dotnet.languages.vc
(http://www.microsoft.com/japan/msdn/newsgroups/default.mspx?dg=microsoft.public.jp.dotnet.languages.vc)
SHGetFolderPath が識別できるフォルダのセットの詳細については、次の Microsoft Platform SDK (ソフトウェア開発キット) のマニュアルを参照してください。
CSIDL
シェル プログラミング全般の詳細については、以下の MSDN (Microsoft Developer Network) Web サイトを参照してください。
http://msdn.microsoft.com/library/default.asp?url=/library/en-us/shellcc/platform/shell/reference/enums/csidl.asp (http://msdn.microsoft.com/library/default.asp?url=/library/en-us/shellcc/platform/shell/reference/enums/csidl.asp)
Shell Programmers Guide
http://msdn.microsoft.com/library/default.asp?url=/library/en-us/shellcc/platform/Shell/programmersguide/shell_intro.asp (http://msdn.microsoft.com/library/default.asp?url=/library/en-us/shellcc/platform/Shell/programmersguide/shell_intro.asp) この資料は以下の製品について記述したものです。
"Microsoft Knowledge Baseに含まれている情報は、いかなる保証もない現状ベースで提供されるものです。Microsoft Corporation及びその関連会社は、市場性および特定の目的への適合性を含めて、明示的にも黙示的にも、一切の保証をいたしません。さらに、Microsoft Corporation及びその関連会社は、本文書に含まれている情報の使用及び使用結果につき、正確性、真実性等、いかなる表明・保証も行ないません。Microsoft Corporation、その関連会社及びこれらの権限ある代理人による口頭または書面による一切の情報提供またはアドバイスは、保証を意味するものではなく、かつ上記免責条項の範囲を狭めるものではありません。Microsoft Corporation、その関連会社 及びこれらの者の供給者は、直接的、間接的、偶発的、結果的損害、逸失利益、懲罰的損害、または特別損害を含む全ての損害に対して、状況のいかんを問わず一切責任を負いません。(Microsoft Corporation、その関連会社 またはこれらの者の供給者がかかる損害の発生可能性を了知している場合を含みます。) 結果的損害または偶発的損害に対する責任の免除または制限を認めていない地域においては、上記制限が適用されない場合があります。なお、本文書においては、文書の体裁上の都合により製品名の表記において商標登録表示、その他の商標表示を省略している場合がありますので、予めご了解ください。" | サポート技術情報の翻訳
|
先頭へ戻る
