如何獲取當前用戶主目錄的路徑?如何在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