代码之家  ›  专栏  ›  技术社区  ›  Brian T Hannan

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

  •  26
  • Brian T Hannan  · 技术社区  · 14 年前

    我浏览了整个互联网,似乎没有一个像样的解决方案,我可以找到。我希望能够在C++中以编程方式获得资源管理器可以转换为真实路径的路径“%AulsSersPrrices % \应用程序数据”。

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

    3 回复  |  直到 10 年前
        1
  •  44
  •   interjay    14 年前

    使用 SHGetFolderPath 具有 CSIDL_COMMON_APPDATA 作为CSIDL。

    TCHAR szPath[MAX_PATH];
    if (SUCCEEDED(SHGetFolderPath(NULL, CSIDL_COMMON_APPDATA, NULL, 0, szPath)))
    {
        //....
    }
    
        2
  •  18
  •   Sam Chad    10 年前

    只是为了取悦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\\") );
    }
    

    here 了解更多详细信息。

        3
  •  -3
  •   Remus Rigo    14 年前

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

    路径= hkey_local_machine\software\microsoft\windows\currentversion\explorer\shell文件夹

    密钥= 通用数据

    推荐文章