如何从 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"
我正在尝试从 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"