WMI дает общий сбой при использовании пользователя без прав администратора для класса Win32_DiskDrive - PullRequest
0 голосов
/ 14 июня 2019

Я дал соответствующее разрешение для учетной записи не администратора, а пользователь добавлен в группу «Распределенные пользователи COM».

При попытке получить доступ к классу Win32_DiskDrive или Win32_DiskDriveToDiskPartition я получаю ошибку Generic Failure. Требуется ли какое-либо дополнительное разрешение?

  • То же самое работает, если я использую учетную запись администратора.
  • Другой класс, такой как Win32_NetworkAdapterConfiguration выдающий результат, используя учетную запись без прав администратора

       if (!String.IsNullOrWhiteSpace(username) && !String.IsNullOrWhiteSpace(password))
                {
                    ConnectionOptions connectionOptions = new ConnectionOptions
                    {
                        Impersonation = ImpersonationLevel.Impersonate,
                        Authentication = AuthenticationLevel.PacketPrivacy,
                        Timeout = TimeSpan.FromSeconds(60),
                        Username = username,
                        Password = password
                    };
    
                    var managementScope = new ManagementScope(@"\\" + assetNameOrIpAddress + @"\root\cimv2", connectionOptions);
                    managementScope.Connect();
                    managementObjectSearcher.Scope = managementScope;
                }
    

1 Ответ

0 голосов
/ 18 июня 2019

Вы должны добавить нужные привилегии

       ConnectionOptions connOptions = new ConnectionOptions();
       connOptions.Impersonation = ImpersonationLevel.Impersonate;
       //Add AuthenticationLevel that suits your need
       connOptions.Authentication = AuthenticationLevel.PacketPrivacy; 
       connOptions.EnablePrivileges = true;

       ManagementScope scope =
  new ManagementScope("MANAGEMNET_PATH"
, connOptions);
       scope.Connect();


       ObjectQuery query = new ObjectQuery(
           "YOUR QUERY");
       ManagementObjectSearcher searcher =
           new ManagementObjectSearcher(scope, query);
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...