【问题标题】:Get Mapped Network Drives in Windows 8在 Windows 8 中获取映射的网络驱动器
【发布时间】: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


【解决方案1】:

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

Select * From Win32_LogicalDisk Where DriveType = 4

【讨论】:

  • 不幸的是,结果相同。但是,正如 Hans 所建议的,它在不在管理员模式下运行时确实有效。
猜你喜欢
  • 2021-08-28
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2012-08-15
  • 1970-01-01
  • 2017-07-19
  • 1970-01-01
相关资源
最近更新 更多