Warning: file_get_contents(/data/phpspider/zhask/data//catemap/0/windows/14.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
C++ 在我的文档中创建文件夹_C++_Windows_Winapi_Visual C++ - Fatal编程技术网

C++ 在我的文档中创建文件夹

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

在Windows My 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