为了开发Windows的桌面应用程序,需要知道每个用户的几个用户目录,我想保存例如用户的文档目录。
我发现已经存在一些宏(例如CSIDL_COMMON_DOCUMENTS)来了解其目录的文件夹,但是当我打印这些信息时,我只得到一个整数并且不知道如何获取字符串
欢迎任何帮助。
非常感谢!
答案 0 :(得分:4)
您可以使用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
。要获取其他用户的Documents文件夹,您的应用必须先模拟该用户,或以其他方式获取该用户的访问令牌,然后才能查询特定于该用户的任何CSIDL
值。
答案 1 :(得分:-2)
使用WinAPI,CSIDL_COMMON_DOCUMENTS
是:
MSFT建议使用KNOWNFOLDERID代替CSIDL_COMMON_DOCUMENTS
,但在Windows Vista之前不支持它。
如果您正在构建Windows应用程序,请考虑使用C ++ / CLI和.NET库,这使得“windowsy”之类的东西非常直接。
using namespace System;
int main()
{
Console::WriteLine();
Console::WriteLine( "GetFolderPath: {0}", Environment::GetFolderPath( Environment::SpecialFolder::MyDocuments) );
}