2009-08-12 99 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