开发者

How do I get the application data path in Windows using C++?

开发者 https://www.devze.com 2022-12-31 16:37 出处:网络
I looked all over the internet and there doesn\'t seem to b开发者_StackOverflowe a decent solution that I could find. I want to be able to programmatically in C++ obtain the path \"%ALLUSERSPROFILE%\\

I looked all over the internet and there doesn't seem to b开发者_StackOverflowe a decent solution that I could find. I want to be able to programmatically in C++ obtain the path "%ALLUSERSPROFILE%\Application Data" that explorer can translate into a real path.

Can I do this without relying on third-party code?


Use SHGetFolderPath with CSIDL_COMMON_APPDATA as the CSIDL.

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


Just to suppliment interjay's answer

  1. I had to include shlobj.h to use SHGetFolderPath.

  2. Often you may need to read a file from appdata, to do this you need to use the pathAppend function (shlwapi.h is needed for this).

#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\\") );
}

See here for more details.


you can also read the value from the registry

path = HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\Windows\CurrentVersion\Explorer\Shell Folders

key = Common AppData

0

精彩评论

暂无评论...
验证码 换一张
取 消

关注公众号