我浏览了整个互联网,似乎找不到一个像样的解决方案。我希望能够在C ++中以编程方式获取探索器可以转换为真实路径的路径“%ALLUSERSPROFILE%\ Application Data”。
我可以不依赖第三方代码吗?
答案 0 :(得分:44)
将SHGetFolderPath
与CSIDL_COMMON_APPDATA
一起用作CSIDL。
TCHAR szPath[MAX_PATH];
if (SUCCEEDED(SHGetFolderPath(NULL, CSIDL_COMMON_APPDATA, NULL, 0, szPath)))
{
//....
}
答案 1 :(得分:18)
只是为了补充interjay的回答
我必须包含shlobj.h
才能使用SHGetFolderPath
。
通常您可能需要从appdata读取文件,
为此,您需要使用pathAppend
函数(此时需要shlwapi.h
)。
#include <shlwapi.h>
#pragma comment(lib,"shlwapi.lib")
#include "shlobj.h"
TCHAR szPath[MAX_PATH];
// Get path for each computer, non-user specific and non-roaming data.
if ( SUCCEEDED( SHGetFolderPath( NULL, CSIDL_COMMON_APPDATA, NULL, 0, szPath ) ) )
{
// Append product-specific path
PathAppend( szPath, _T("\\My Company\\My Product\\1.0\\") );
}
有关详细信息,请参阅here。
答案 2 :(得分:-3)
您还可以从注册表中读取值
path = HKEY_LOCAL_MACHINE \ SOFTWARE \ Microsoft \ Windows \ CurrentVersion \ Explorer \ Shell文件夹
key = Common AppData