为了开发一个Windows桌面应用程序,它需要知道每个用户的几个用户目录,我想保存例如用户的文档目录。使用C++获取目录根
我发现已经存在一些宏(例如CSIDL_COMMON_DOCUMENTS)知道它的目录的文件夹,但是当我打印这些信息时,我只是得到一个整数并且不知道如何得到一个字符串。
任何帮助将受到欢迎。
非常感谢!
为了开发一个Windows桌面应用程序,它需要知道每个用户的几个用户目录,我想保存例如用户的文档目录。使用C++获取目录根
我发现已经存在一些宏(例如CSIDL_COMMON_DOCUMENTS)知道它的目录的文件夹,但是当我打印这些信息时,我只是得到一个整数并且不知道如何得到一个字符串。
任何帮助将受到欢迎。
非常感谢!
使用WinAPI的,CSIDL_COMMON_DOCUMENTS
是:
MSFT建议使用KNOWNFOLDERID代替CSIDL_COMMON_DOCUMENTS
,但它在Windows Vista之前不受支持。
如果您正在构建Windows应用程序,请考虑使用C++/CLI和.NET库,这使得像访问用户文件夹这样的“窗户”事物非常简单。
using namespace System;
int main()
{
Console::WriteLine();
Console::WriteLine("GetFolderPath: {0}", Environment::GetFolderPath(Environment::SpecialFolder::MyDocuments));
}
您可以使用SHGetFolderPath()
:
#include <iostream>
#include <Windows.h>
#include <Shlobj.h>
int main()
{
char path[MAX_PATH];
if (SUCCEEDED(SHGetFolderPath(NULL, CSIDL_COMMON_DOCUMENTS, NULL, 0, path)))
{
std::cout << path;
}
}
替换CSIDL_COMMON_DOCUMENTS
您所需要的任何CSIDL
,如CSIDL_MYDOCUMENTS
。要获取其他用户的文档文件夹,您的应用必须先模拟该用户或以其他方式获取该用户的访问令牌,然后才能查询特定于该用户的任何CSIDL
值。
[可能的答案](http://stackoverflow.com/questions/8610787/how-to-get-the-path-to-csidl-common-documents-in-net-3-5): – ryrich
什么版本的Windows是你的目标? – Alan
那么目标是W7和W8 – user3009804