get %APPDATA% path using c++

2020-07-16 03:49发布

问题:

Hey guys, i want to get the path to the %APPDATA% folder.

in win 2000 & xp it's in: C:\Documents and Settings\user name\Application Data

in vista & win7 it's in: C:\Users\user name\AppData\Roaming

I know there is the function SHGetSpecialFolderPath but it retrieves a BOOL and i want to get the path as a string.

can some one help?

回答1:

The third parameter of SHGetSpecialFolderPath(), named lpszPath, is marked as __out.

Something like this should do:

// Beware, brain-compiled code ahead!
wchar_t buffer[MAX_PATH];
BOOL result = SHGetSpecialFolderPath( hWnd
                                    , buffer
                                    , CSIDL_LOCAL_APPDATA
                                    , false );
if(!result) throw "You'll need error handling here!";
std::wcout << buffer;

Note: I haven't done any Win API work in years. Very likely someone comes along shortly pointing out where I blew it.