如前所述,我在使用 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 上测试了相同的代码,没有任何问题。
任何帮助将非常感激。谢谢