如何从 C:/ 驱动器获取所有文件路径?

How to get all file path from C:/ drive?

我正在尝试从 C++ 中的根 (C:/) 检索所有文件

首先,我检索计算机中的所有逻辑驱动器,然后我使用 std::filesystem 库(特别是 recursive_directory_iterator 函数,以便在目录中循环)

    DWORD dwSize = MAX_PATH;
    char szLogicalDrives[MAX_PATH] = { 0 };
    DWORD dwResult = GetLogicalDriveStrings(dwSize, szLogicalDrives);

    if (dwResult > 0 && dwResult <= MAX_PATH)
    {
        char* szSingleDrive = szLogicalDrives;
        while (*szSingleDrive)
        {
            szSingleDrive[strlen(szSingleDrive) - 1] = 0;
            printf(szSingleDrive);
            for (fs::directory_entry p : std::filesystem::recursive_directory_iterator(szSingleDrive))
            {

                string filePath = p.path().string();
                // Vérification du type de l'objet
                if (fs::is_regular_file(p.path()))
                {

                    cout << filePath << endl;


                }

            // get the next drive
            szSingleDrive += strlen(szSingleDrive) + 1;
        }
      }
    }

但是,我得到的输出是我项目的路径。 例如:C:x64\Debug\myProject.exe

期望的输出:C:\Users, C:\Windows, C:\Program Files...

为了解决这个问题,我必须在管理员中启动 VS 2019(或在管理员中启动 .exe)+ 禁用 Windows Defender。

为了避免 UAC 异常,我还在文件系统选项中添加了 skip_permission_denied

但是我的程序还是遇到了"Sharing Violation error"