我浏览了整个互联网,似乎找不到一个像样的解决方案。我希望能够在 C++ 中以编程方式获取资源管理器可以转换为真实路径的路径“%ALLUSERSPROFILE%\Application Data”。
我可以在不依赖第三方代码的情况下做到这一点吗?
我浏览了整个互联网,似乎找不到一个像样的解决方案。我希望能够在 C++ 中以编程方式获取资源管理器可以转换为真实路径的路径“%ALLUSERSPROFILE%\Application Data”。
我可以在不依赖第三方代码的情况下做到这一点吗?
用作CSIDL SHGetFolderPath
。CSIDL_COMMON_APPDATA
TCHAR szPath[MAX_PATH];
if (SUCCEEDED(SHGetFolderPath(NULL, CSIDL_COMMON_APPDATA, NULL, 0, szPath)))
{
//....
}
只是为了补充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\\") );
}
有关更多详细信息,请参见此处。
您还可以从注册表中读取值
路径 = HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\Windows\CurrentVersion\Explorer\Shell 文件夹
键 =通用 AppData