3

Windowsユーザーの「ホーム」ディレクトリ(c:\Documents and Settings\someusername\ またはc:\users\someusername\)内にディレクトリを作成する必要があります。このディレクトリは永続的に存在しますが、一時ファイルのみが含まれます。

良き市民になりたい場合、ユーザープロファイル内のこのディレクトリの最適な場所はどこですか?私のプログラムは(おそらく)管理者以外のユーザーによって実行され、自分のプロファイルにアクセスするだけで済みますが、フォルダーを作成するためのアクセス許可が必要であることに注意してください。

使用するMy Documents\NameOfMyApp\ことは可能だと思いますが、それは煩わしいようです。

このタイプのデータのより良い場所と、それにアクセスするための特定のMFC呼び出しはありますか?

4

3 に答える 3

4

AppDataディレクトリの使用を検討します。SHGetSpecialFolderLocationあなたはそれを渡すことでその場所を得ることができますCSIDL_APPDATA; (またはいくつかの選択肢-ほぼすべてのバージョンのWindowsは、、、または(多くの場合)両方の新しい代替品を追加しますSHGetSpecialFolderLocationSHGetSpecialFolderPath

于 2010-08-24T19:46:18.527 に答える
1

次のwin32呼び出しを見てください。

GetUserProfileDirectoryを使用して、データをappnameのサブディレクトリに配置することをお勧めします。

ビスタ以上には「 \documentsandsettings 」フォルダがなく「 \user 」に変更されているので、ぜひこの機能を使いたくなるでしょう。

于 2010-08-24T19:44:12.487 に答える
0

優れたアプリケーション市民であるため、次を使用する必要があります:[ドライブ]:\ドキュメントと設定[ユーザー名] \アプリケーションデータ[アプリ名]または[ドライブ]:\ドキュメントと設定[ユーザー名]\ローカル設定\アプリケーションデータ[アプリ名](オンVistaおよびWin7の「ドキュメントと設定」は、最も賢明な「ユーザー」に置き換えられます)

環境変数USERPROFILEは、ご想像のとおり、ユーザープロファイルパスを提供します。TEMPパスは、ユーザーの個々の一時ディレクトリへのパスを提供します

一時ファイルがユーザー固有でない場合は、C:\tempを使用できます。

編集:ユーザー固有の場所を使用する場合は、パスをハードコーディングするのではなく、環境変数(XPおよび2000ではUSERPATH)を使用することを強くお勧めします。

-ワルド

PSこれを聞いてくれてありがとう。Waaaayのアプリケーションが多すぎるために悪い動作が見られます。C:ドライブのルートは、物を捨てるべき場所ではありません!少なくとも、(存在をテストし、必要に応じて作成し、)C:\Tempを使用します。

于 2010-08-24T19:49:01.437 に答える