列出所有 UNC 连接的驱动器 Windows

问题描述 投票:0回答:0

我正在尝试列出 Windows 上的所有远程和本地驱动器。使用 GetLogicalDrives()GetDriveType(),映射到字母的任何驱动器都是一个相当简单的问题。
主要问题与 UNC 路径有关,例如 \server\share\,而如果我已经知道路径,GetDriveType() 将正常工作,但使用 GetLogicalDrives() 发现它显然不起作用。我还希望能够在单个网络位置下找到多个共享,例如 \server\share1\ 和 \server\share2\

我尝试过使用像 WNetGetNetworkInformation() WNetEnumResource()WNetOpenEnum() 这样的 Windows api 调用,但没有取得任何真正的成功,而且我不确定使用这些调用是否能得到我正在寻找的结果。

我的代码的当前(简化)状态是:

#include <windows.h>
#include <iostream>

int main() {
    DWORD drives = GetLogicalDrives();
    DWORD mask = 1;
    for(UINT i = 0; i < 32; i++) {
        if(mask & drives) {
            CHAR driveName[] = {(CHAR)('A' + i), ':', '\\', 0};
            UINT driveType = GetDriveTypeA(driveName);
            std::cout << "Drive " << driveName << " is " << 
                (driveType == DRIVE_REMOTE ? "remote" : "local") << '\n';
        }
        mask <<= 1;
    }
    return 0;
}

任何帮助,甚至是可能将我推向正确方向的 API 调用,我将不胜感激。

c++ windows winapi
© www.soinside.com 2019 - 2024. All rights reserved.