2009-08-12 146 views
6

我想寫一些信息到用戶的文檔文件夾(例如C:\ Documents and Settings \ [userName]),但我似乎無法找到如何抓住路徑編程。有沒有辦法做到這一點? C++,不使用.NET。寫入用戶文檔文件夾C++

謝謝!

回答

16

SHGetFolderPath與CSIDL_PERSONAL可用於獲取用戶的Documents文件夾。

WCHAR path[MAX_PATH]; 
HRESULT hr = SHGetFolderPath(NULL, CSIDL_PERSONAL, NULL, 
          SHGFP_TYPE_CURRENT, path); 
+0

的文件意味着你應該使用CSIDL_MYDOCUMENTS的CSIDL_PERSONAL。 – 2009-08-12 21:17:52

+1

鏈接到文檔:) http://technet.microsoft.com/en-us/library/cc749104(WS.10).aspx – 2009-08-12 21:19:43

+0

CSIDL_PERSONAL&CSIDL_MYDOCUMENTS是同義詞。 。 。但是,我更喜歡CSIDL_PERSONAL的內涵。 – Michael 2009-08-12 21:22:57

-2

你可以這樣做:

wchar_t *pUSERPROFILE; 
size_t len; 
_wdupenv_s(&pUSERPROFILE, &len, L"USERPROFILE"); 
wstring userprofile = pUSERPROFILE; 
free (pUSERPROFILE);  

_wdupenv_s MSDN

+0

你想_wgetenv;這是一個內存泄漏。一個很好的例子,微軟的「安全」擴展實際上可能會適得其反。 – MSalters 2009-08-13 11:23:10

+0

當然,你應該免費(pUSERPROFILE); – anno 2009-08-13 17:00:39

+0

至於,_wgetenv:「通過分配緩衝區本身,_dupenv_s爲getenv_s,_wgetenv_s提供了一個更方便的選擇。」 – anno 2009-08-13 17:05:53