我有一个用c#编写的应用程序,它创建了所有映射的网络驱动器的列表。
我使用WMI来实现这一目标,这是我的方法:
List < NetworkConnection > networkConnections = new List < NetworkConnection > ();
try {
var path = new ManagementPath();
path.NamespacePath = "\\ROOT\\CIMV2";
path.ClassName = "Win32_NetworkConnection"; //https://msdn.microsoft.com/en-us/library/aa394220(v=vs.85).aspx
var management = new ManagementClass(path);
foreach(ManagementObject obj in management.GetInstances()) {
NetworkConnection networkConnection = new NetworkConnection() {
LocalName = (string) obj.Properties["LocalName"].Value,
Name = (string) obj.Properties["Name"].Value,
RemotePath = (string) obj.Properties["RemotePath"].Value,
UserName = (string) obj.Properties["UserName"].Value,
IsPersistent = (bool) obj.Properties["Persistent"].Value,
ConnectionState = (string) obj.Properties["ConnectionState"].Value
};
networkConnections.Add(networkConnection);
}
} catch (Exception ex) {
log.Error($ "Failed to get network connections.", ex);
}
return networkConnections;
这在我的测试客户端W7和W8 64位和32位上都可以使用。它不能在我的W10客户上使用。 在W10上,我只得到一个空列表。
似乎management.GetInstances()不返回任何内容。但是为什么呢?
任何帮助将不胜感激!谢谢!