【发布时间】:2013-04-30 22:54:06
【问题描述】:
如上所述,我在使用 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 上测试了相同的代码,没有任何问题。
任何帮助将不胜感激。谢谢
【问题讨论】:
-
我的水晶球说你正在用 UAC 海拔运行 VS。
-
你的水晶球是正确的。有什么影响?
-
我认为“net use”的等价物是Win32_NetworkConnection
-
谢谢汉斯,您的回答是正确的。看起来在不处于管理员模式时工作。
标签: c# networking network-programming wmi mapped-drive