如何获取当前用户主目录的路径?
Ex:在Windows中,如果当前用户是“访客”,我需要“C:\ Users \ guest”
我的应用程序将在大多数Windows版本(XP,Vista,Win 7)上运行。
答案 0 :(得分:12)
使用功能SHGetFolderPath
。此函数优先于查询环境变量,因为后者可以修改为指向错误的位置。该文档包含一个示例,我在此重复(略微调整):
#include <Shlobj.h> // need to include definitions of constants
// .....
WCHAR path[MAX_PATH];
if (SUCCEEDED(SHGetFolderPathW(NULL, CSIDL_PROFILE, NULL, 0, path))) {
...
}
答案 1 :(得分:5)
只需使用环境变量,在这种特殊情况下,您需要%HOMEPATH%
并将其与%SystemDrive%
http://en.wikipedia.org/wiki/Environment_variable#Default_Values_on_Microsoft_Windows
答案 2 :(得分:3)
我使用了%USERPROFILE%来获取当前用户主目录的路径。
答案 3 :(得分:-1)
方法1:
#include <Shlobj.h>
std::string desktop_directory(bool path_w)
{
if (path_w == true)
{
WCHAR path[MAX_PATH + 1];
if (SHGetSpecialFolderPathW(HWND_DESKTOP, path, CSIDL_DESKTOPDIRECTORY, FALSE))
{
std::wstring ws(path);
std::string str(ws.begin(), ws.end());
return str;
}
else return NULL;
}
}
方法2:
#include <Shlobj.h>
LPSTR desktop_directory()
{
static char path[MAX_PATH + 1];
if (SHGetSpecialFolderPathA(HWND_DESKTOP, path, CSIDL_DESKTOPDIRECTORY, FALSE)) return path;
else return NULL;
}