C++ 在我的文档中创建文件夹
在Windows My Documents目录中创建目录结构时遇到问题。我用C++ 在我的文档中创建文件夹,c++,windows,winapi,visual-c++,C++,Windows,Winapi,Visual C++,在Windows My Documents目录中创建目录结构时遇到问题。我用 ExpandEnvironmentStrings(L"%USERPROFILE%\\Documents",dir,MAX_PATH); 为了得到这个目录,我在那里创建了一个新的目录 CreateDirectoryW(dir,NULL) 然后在那里我想创建另一个目录,所以本质上我想要Documents\foo\bar,但是当我通过浏览器侧栏上的库转到foo目录时,除非我转到C:\users\xxx\Documents
ExpandEnvironmentStrings(L"%USERPROFILE%\\Documents",dir,MAX_PATH);
为了得到这个目录,我在那里创建了一个新的目录
CreateDirectoryW(dir,NULL)
然后在那里我想创建另一个目录,所以本质上我想要Documents\foo\bar,但是当我通过浏览器侧栏上的库转到foo目录时,除非我转到C:\users\xxx\Documents\foo,否则找不到“bar”。另外,如果我进入Libraries\Documents\foo并右键单击->新建->文件夹,则该选项不可用
我想知道是否有一个安全选项来创建我应该使用的目录,或者我做错了什么如果你想创建目录树,你可以使用。以下代码在我的计算机上运行良好
#include <iostream>
#include <Windows.h>
#include <Shlobj.h>
#include <Shlwapi.h>
int main()
{
char path[MAX_PATH];
if (SUCCEEDED(SHGetFolderPath(NULL, CSIDL_COMMON_DOCUMENTS, NULL, 0, path)))
{
PathAppend(path, "foo\\bar");
if (SHCreateDirectoryEx(NULL, path, NULL) != ERROR_SUCCESS)
{
std::cout << "Error: " << GetLastError();
}
}
else
{
std::cout << "Error: " << GetLastError();
}
}
#包括
#包括
#包括
#包括
int main()
{
字符路径[最大路径];
if(成功(SHGetFolderPath(NULL,CSIDL_公共_文档,NULL,0,path)))
{
路径附加(路径“foo\\bar”);
if(SHCreateDirectoryEx(NULL,path,NULL)!=错误\u成功)
{
std::cout调用API后,调用GetLastError()并检查错误代码,您将找到运行Windows版本的原因。如果是Windows 7,请右键单击可执行文件并“以管理员身份运行”。这是我多次创建文件位置的一个因素。文件夹是在C:\users\xxx\Documents中创建的,但当我查看桌面>库>文档链接时,foo在那里,但缺少子目录栏。CreateDirectoryW在这两个实例中都正确返回,我已检查GetLastError,它报告没有问题。您需要使用CSIDL
或KNOWNFOLDERID
请注意,“我的文档”文件夹可能不在%USERPROFILE%\Documents
中。您应该始终使用适当的函数来查找实际的文件夹位置。我想您的意思是CSIDL\u MYDOCUMENTS