すべてのユーザーにとって同じであるが、プログラムに対して書き込み可能でなければならないプログラムデータファイルを保存するための適切な場所はどこですか?MS Windows XPの同等の場所はどこですか?通常のユーザーがインストールした後、C:\ProgramDataは書き込み可能ではないことを読みました。本当?Platform SDKを使用してプログラムでそのディレクトリを取得するにはどうすればよいですか?
5 に答える
SHGetFolderPath()
のCSIDLを使用しCSIDL_COMMON_APPDATA
ます。
詳細については、http://msdn.microsoft.com/en-us/library/bb762181(VS.85).aspxをご覧ください。
バッチファイルのパスが必要な場合は、%ALLUSERSPROFILE%
環境変数を使用することもできます。
さまざまなオプションの概要がここにあります: http://blogs.msdn.com/cjacks/archive/2008/02/05/where-should-i-write-program-data-instead-of-program-files .aspx
プログラム ファイルではなく、プログラム データをどこに書き込むべきですか?
一般的なアプリケーション コードの更新は次のとおりです。うまくいきました.しかし今では,これは私がかつて考えていたほど物事を貼り付けるのに最適な場所ではないことがわかりました.UACでは管理者でさえ標準的なユーザーのような特権でほとんどの場合実行されるため.だから,代わりに私のファイルをどこに置くべきですか? ?」
実際SHGetFolderPath
には非推奨です。
SHGetKnownFolderPath
代わりに使用する必要があります。
次を使用できます。
CString strPath;
::SHGetSpecialFolderPath(NULL, strPath.GetBuffer(1024), CSIDL_COMMON_APPDATA, FALSE);
この特定の質問に関する Raymond Chen の記事を参照してください。
つまり、セキュリティホールを求めています。