以管理员身份发现映射的网络驱动器

时间:2019-10-29 21:09:30

标签: c# wmi admin network-drive

我有一个必须以管理员身份运行的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;
}

1 个答案:

答案 0 :(得分:0)

我尝试了几件事,但这是我发现的唯一解决方法。

如何启用EnableLinkedConnections

  1. 单击开始,在启动程序和文件框中,键入 regedit ,然后 然后按Enter。

  2. 找到并右键单击注册表子项 HKEY_LOCAL_MACHINE \ SOFTWARE \ Microsoft \ Windows \ CurrentVersion \ Policies \ System

  3. 指向新建,然后单击 DWORD 值。

  4. 键入 EnableLinkedConnections ,然后按 ENTER

  5. 右键单击 EnableLinkedConnections ,然后单击修改

  6. 在“数值数据”框中,键入 1 ,然后单击确定

  7. 退出注册表编辑器,然后重新启动计算机