0

プログラムファイルフォルダーの場所を取得したいので、使用しています

SHGetSpecialFolderPath(NULL,Path_variable,CSIDL_PROGRAM_FILES,FALSE)

ここには何も問題はありませんが、エラーが発生しています

エラー C2065: 'CSIDL_PROGRAM_FILES': 宣言されていない識別子

VC++ 6.0 を使用しており、OS は WIN 7 です。ここで何が問題なのですか?. Visual Studio 2005 を使用して同じコードを実行しても、エラーは発生しません。

4

2 に答える 2

0

これはあなたの問題の代替です、あなたはそれを使うことができます

レジストリエントリを読んでみてください

HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\Windows\CurrentVersion\ProgramFilesDir

この位置には、プログラムファイルのパスがあります。

編集:

CRegKey key;
CString value = "ProgramFilesDir";
ULONG len = 255;
CString buffer;
long nError = key.Open(HKEY_LOCAL_MACHINE, "SOFTWARE\\Microsoft\\Windows\\CurrentVersion",KEY_READ);
if(nError == ERROR_SUCCESS)
{
}
key.QueryStringValue(value,buffer.GetBufferSetLength(len),&len);

これで、バッファにパスが含まれます

詳細については、こちらをご覧ください

于 2012-10-22T07:00:56.850 に答える
0

このフォルダを取得するために使用するコード スニペット全体を含めていただけますか?

XP Sp3 で VS 6.0 SP3 を使用して MFC アプリケーションでテストしたところ、魅力的に動作します。これが以前のシステムで機能するには、IE 4 以降がインストールされている必要があります。

ヴィッキー:

コードは VS 6.0 では機能しません。CRegKey の QueryStringValue メンバーが存在しません。

その上、SHGetSpecialFolderPath を使用するとうまくいくと思います。また、レジストリは変更できますが、SHGetSpecialFolderPath 呼び出しの結果は変更されません。

于 2012-10-23T19:59:02.310 に答える