如何使用C ++在Windows中获取应用程序数据路径?

时间:2010-05-24 17:46:05

标签: c++ windows application-data

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

我可以不依赖第三方代码吗?

3 个答案:

答案 0 :(得分:44)

SHGetFolderPathCSIDL_COMMON_APPDATA一起用作CSIDL。

TCHAR szPath[MAX_PATH];
if (SUCCEEDED(SHGetFolderPath(NULL, CSIDL_COMMON_APPDATA, NULL, 0, szPath)))
{
    //....
}

答案 1 :(得分:18)

只是为了补充interjay的回答

  1. 我必须包含shlobj.h才能使用SHGetFolderPath

  2. 通常您可能需要从appdata读取文件, 为此,您需要使用pathAppend函数(此时需要shlwapi.h)。

  3. #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