15

すべてのユーザーにとって同じであるが、プログラムに対して書き込み可能でなければならないプログラムデータファイルを保存するための適切な場所はどこですか?MS Windows XPの同等の場所はどこですか?通常のユーザーがインストールした後、C:\ProgramDataは書き込み可能ではないことを読みました。本当?Platform SDKを使用してプログラムでそのディレクトリを取得するにはどうすればよいですか?

4

5 に答える 5

8

SHGetFolderPath()のCSIDLを使用しCSIDL_COMMON_APPDATAます。

詳細については、http://msdn.microsoft.com/en-us/library/bb762181(VS.85).aspxをご覧ください。

バッチファイルのパスが必要な場合は、%ALLUSERSPROFILE%環境変数を使用することもできます。

于 2008-09-25T06:09:17.270 に答える
7

さまざまなオプションの概要がここにあります: http://blogs.msdn.com/cjacks/archive/2008/02/05/where-should-i-write-program-data-instead-of-program-files .aspx

プログラム ファイルではなく、プログラム データをどこに書き込むべきですか?

一般的なアプリケーション コードの更新は次のとおりです。うまくいきました.しかし今では,これは私がかつて考えていたほど物事を貼り付けるのに最適な場所ではないことがわかりました.UACでは管理者でさえ標準的なユーザーのような特権でほとんどの場合実行されるため.だから,代わりに私のファイルをどこに置くべきですか? ?」

于 2008-11-23T23:34:23.710 に答える
4

実際SHGetFolderPathには非推奨です。

SHGetKnownFolderPath代わりに使用する必要があります。

于 2009-02-12T00:17:29.093 に答える
1

次を使用できます。

CString strPath;
::SHGetSpecialFolderPath(NULL, strPath.GetBuffer(1024), CSIDL_COMMON_APPDATA, FALSE);
于 2008-09-25T06:10:52.773 に答える
1

この特定の質問に関する Raymond Chen の記事を参照してください。

つまり、セキュリティホールを求めています。

于 2008-09-25T06:13:44.093 に答える