如何获取当前用户主目录的路径?如何在Windows中获取当前用户的主目录
例如:在Windows中,如果当前用户是 “客串” 我需要 “C:\用户\做客”
我的应用程序将在大多数Windows版本(XP,VISTA,WIN 7)的运行。
如何获取当前用户主目录的路径?如何在Windows中获取当前用户的主目录
例如:在Windows中,如果当前用户是 “客串” 我需要 “C:\用户\做客”
我的应用程序将在大多数Windows版本(XP,VISTA,WIN 7)的运行。
使用功能SHGetFolderPath
。此功能优于查询环境变量,因为后者可以修改为指向错误的位置。该文件包含一个例子,我在这里重复(略作调整):
#include <Shlobj.h> // need to include definitions of constants
// .....
WCHAR path[MAX_PATH];
if (SUCCEEDED(SHGetFolderPathW(NULL, CSIDL_PROFILE, NULL, 0, path))) {
...
}
只需使用环境变量,在你想%HOMEPATH%
这种特殊情况下,并结合起来,与%SystemDrive%
http://en.wikipedia.org/wiki/Environment_variable#Default_Values_on_Microsoft_Windows
我已经使用%USERPROFILE%获得路径当前用户的主目录。
方法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;
}
你能简单地解释两者之间的区别吗? – 2018-02-07 13:02:04
您是否在寻找当前路径,或主目录?如果你希望别人付出努力帮助你,请付出一些努力来问你的问题(和正确的措辞/拼写)。 – 2012-03-03 01:54:06
我很抱歉。我需要获取用户的路径。在Windows 7中,每个登录用户都有一个帐户在“用户”文件夹下。如果我的登录帐户是HPFE,我需要获取路径“C:\ users \ hpfe”。 – Ullan 2012-03-03 01:57:23