0

如前所述,我在使用 Visual Studio 2012 的 Windows 8 机器上。

我需要映射/取消映射网络驱动器以及获取所有当前映射的驱动器的列表。要映射/取消映射,我分别通过 PInvoke 使用 WNetAddConnection2A 和 WNetCancelConnection2A。要获取当前映射驱动器的列表,我目前正在使用 WMI 并查询 Win32_MappedLogicalDisk。

        using (var searcher = new ManagementObjectSearcher("SELECT * FROM Win32_MappedLogicalDisk"))
        {
            foreach (ManagementObject queryObj in searcher.Get())
            {
            }
        }

有趣的是,从 WMI 返回的“映射”驱动器没有显示在“计算机”下文件资源管理器的左侧面板中。使用“net use”命令也不会显示返回的“映射”驱动器。我可以通过 WNetAddConnection2A 映射驱动器,它将通过 Win32_MappedLogicalDisk 查询返回,但不会显示在文件资源管理器中。

此外,我可以通过文件资源管理器手动映射驱动器,映射的驱动器将使用“net use”显示,但不会使用 WMI 返回以查询 Win32_MappedLogicalDisk。

文件资源管理器/“网络使用”似乎与 WNetAddConnection2A/WMI 的来源不同。我已经在 Windows 7 上测试了相同的代码,没有任何问题。

任何帮助将非常感激。谢谢

4

1 回答 1

2

尝试Win32_LogicalDiskWMI 类和 DriveType 属性(值 4 表示网络驱动器)。

Select * From Win32_LogicalDisk Where DriveType = 4
于 2013-05-01T16:28:21.133 回答