我有一个必须以管理员身份运行的c#应用程序。除了很多其他事情,应用程序还必须读取映射的网络驱动器。
我想使用WMI和Win32_NetworkConnection来做到这一点,但只能作为非管理员使用。
有解决方法吗?我最好的选择是什么?
谢谢!
编辑:
这里是即使连接了3个网络驱动器,我仍然返回一个空列表的代码:
public IEnumerable<NetworkConnection> GetNetworkConnections()
{
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;
}
答案 0 :(得分:0)
我尝试了几件事,但这是我发现的唯一解决方法。
如何启用EnableLinkedConnections
单击开始,在启动程序和文件框中,键入 regedit ,然后 然后按Enter。
找到并右键单击注册表子项 HKEY_LOCAL_MACHINE \ SOFTWARE \ Microsoft \ Windows \ CurrentVersion \ Policies \ System 。
指向新建,然后单击 DWORD 值。
键入 EnableLinkedConnections ,然后按 ENTER 。
右键单击 EnableLinkedConnections ,然后单击修改。
在“数值数据”框中,键入 1 ,然后单击确定。
退出注册表编辑器,然后重新启动计算机。