在Windows 8中获取映射的网络驱动器

时间:2013-04-30 22:54:06

标签: c# networking network-programming wmi mapped-drive

如上所述,我使用的是使用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上测试了相同的代码而没有任何问题。

非常感谢任何帮助。感谢

1 个答案:

答案 0 :(得分:2)

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

Select * From Win32_LogicalDisk Where DriveType = 4