29

我浏览了整个互联网,似乎找不到一个像样的解决方案。我希望能够在 C++ 中以编程方式获取资源管理器可以转换为真实路径的路径“%ALLUSERSPROFILE%\Application Data”。

我可以在不依赖第三方代码的情况下做到这一点吗?

4

3 回答 3

51

用作CSIDL SHGetFolderPathCSIDL_COMMON_APPDATA

TCHAR szPath[MAX_PATH];
if (SUCCEEDED(SHGetFolderPath(NULL, CSIDL_COMMON_APPDATA, NULL, 0, szPath)))
{
    //....
}
于 2010-05-24T17:52:26.393 回答
20

只是为了补充interjay的回答

  1. 我必须包括shlobj.h使用SHGetFolderPath.

  2. 通常您可能需要从 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\\") );
}

有关更多详细信息,请参见此处

于 2012-06-14T12:11:00.067 回答
-4

您还可以从注册表中读取值

路径 = HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\Windows\CurrentVersion\Explorer\Shell 文件夹

键 =通用 AppData

于 2010-05-24T18:08:05.343 回答