12

我刚刚找到了一小段代码,它可以让我在不使用 system() 的情况下使用 windows API 创建一个目录。唯一的问题是我无法在子目录中创建目录。例如

#include<windows.h>

int main(){
   CreateDirectory ("C:\\random", NULL);
   return 0;
}

在 C 中创建一个名为 random 的文件夹。

但如果我这样做

#include<windows.h>

int main(){
   CreateDirectory ("C:\\Users\morons", NULL);
   return 0;
}

它在名为 Usersmorons 的 C che 文件夹中创建,而不是在 Users 下创建文件夹 morons。有什么建议吗?

4

3 回答 3

39

您需要管理员权限才能在 C:\Users 中创建或删除文件夹。确保您以管理员身份运行 .exe,以确保您拥有这些权限。如果不这样做,则 CreateDirectory 将失败。

要获取返回的错误,请使用 GetLastError。有关可能返回的错误的参考,请查看“返回值”部分

http://msdn.microsoft.com/en-us/library/windows/desktop/aa363855%28v=vs.85%29.aspx

此外,您正在寻找的代码是

CreateDirectory ("C:\\Users\\morons", NULL);

因为“白痴”之前需要有一个“\\”

于 2012-01-19T18:27:56.790 回答
22

你需要另一个反斜杠:

CreateDirectory ("C:\\Users\\morons", NULL);
于 2012-01-19T18:18:22.753 回答
3

使 Windows 应用程序跨平台,使用CreateDirectory()c++17 标准现在有std::filesystem::create_directories

#include<iostream>
#include <filesystem>

int main()
{
    std::filesystem::create_directories("C:\\newfolder\\morons");
}

需要更改 makefile-std=c++17并更新到支持 c++17 的 GCC 编译器。

在 Visual Studio 中,按照此处的步骤启用 c++17

于 2019-09-03T11:26:48.027 回答