У меня есть приложение С#, которое нужно запускать от имени администратора. Наряду со многими другими вещами, приложение должно читать подключенные сетевые диски.

Я хотел сделать это с помощью 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
calgara12 30 Окт 2019 в 00:09
Можете ли вы поделиться кодом, который вы используете, и выводом, который вы получаете при запуске с повышенными правами и при обычном запуске, пожалуйста?
 – 
Leo
30 Окт 2019 в 00:17
1
Я добавил код.
 – 
calgara12
30 Окт 2019 в 09:15
1
Если ваши сопоставленные диски сопоставлены с процессом без повышенных прав, процесс с повышенными правами не может их «увидеть».
 – 
EylM
30 Окт 2019 в 20:32

1 ответ

Я пробовал несколько вещей, но это единственный обходной путь, который я нашел.

Как включить EnableLinkedConnections

  1. Нажмите Пуск, введите regedit в поле Пуск программ и файлов и затем нажмите ВВОД.

  2. Найдите и щелкните правой кнопкой мыши подраздел реестра HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\Windows\CurrentVersion\Policies\System.

  3. Наведите курсор на Создать и нажмите Значение DWORD.

  4. Введите EnableLinkedConnections и нажмите ВВОД.

  5. Щелкните правой кнопкой мыши EnableLinkedConnections и выберите Изменить.

  6. В поле "Значение" введите 1 и нажмите ОК.

  7. Закройте редактор реестра и перезагрузите компьютер.

0
Leo 31 Окт 2019 в 16:43