我想获取程序文件文件夹的位置,所以我正在使用
SHGetSpecialFolderPath(NULL,Path_variable,CSIDL_PROGRAM_FILES,FALSE)
我没有看到任何错误,但我收到了错误
错误C2065:'CSIDL_PROGRAM_FILES':未声明的标识符
我使用的是VC ++ 6.0,操作系统是WIN 7.这里有什么问题?如果我使用Visual Studio 2005运行相同的代码,我没有收到任何错误。
答案 0 :(得分: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);
现在缓冲区将包含路径
有关详细信息,请参阅here
答案 1 :(得分:0)
您能否包含用于检索此文件夹的整个代码段?
我刚刚在XP Sp3上使用VS 6.0 SP3在MFC应用程序中对它进行了测试,它就像一个魅力。 为了在早期的系统上工作,你必须安装IE 4或更高版本。
<强> vikky:强>
您的代码在VS 6.0中无效。 CRegKey的QueryStringValue成员不存在。
此外我认为使用SHGetSpecialFolderPath应该可行。 此外,注册表可以更改,但SHGetSpecialFolderPath调用的结果不会。