WMI и ошибка "User credentials cannot be used for local connections" - C#

Узнай цену своей работы

Формулировка задачи:

Здравствуйте, специалисты. Я хотел бы попросить у вас помощи в одном вопросе, мучающим меня на протяжении нескольких дней. Появилась задача организовать мониторинг температуры на операторском компьютере. Я решил написать небольшое приложение на C#, но наткнулся на вот такую проблему. На том компьютере у пользователя, нет прав локального администратора, и дать я ему их не могу. Если запустить получения данных из консоли с помощью Wmic я получаю ошибку Access Denied. Документации функции ManagementScope, я нашел упоминание о подключении через учетную запись. После чего немного изменил код:
 private void button1_Click(object sender, EventArgs e)
        {
 
            hostname = Environment.MachineName;
            ConnectionOptions options =  new ConnectionOptions();
            options.Impersonation = System.Management.ImpersonationLevel.Impersonate;
            options.EnablePrivileges = true;
            options.Authentication = AuthenticationLevel.Packet;
            options.Username = hostname+@"\diag";
            options.Password = "****";

            ManagementScope scope = new ManagementScope(@"\"+hostname+@"\root\WMI", options);
        scope.Connect();
 
        //Query system for Operating System information
        ObjectQuery query = new ObjectQuery("SELECT * FROM MSAcpi_ThermalZoneTemperature");
        ManagementObjectSearcher searcher = new ManagementObjectSearcher(scope,query);
 
        ManagementObjectCollection queryCollection = searcher.Get();
 
        foreach ( ManagementObject m in queryCollection)
        {
            // Display the remote computer information
          
            Console.WriteLine("Manufacturer : {0}",
                m["CurrentTemperature"]);
        }
Логин и пароль я указал, от пользователя с правами локального админа на этой машине. Но теперь программа возвращает мне ошибку на строке scope.Connect(); "User credentials cannot be used for local connections". Что мне делать? Помогите пожалуйста.

Решение задачи: «WMI и ошибка "User credentials cannot be used for local connections"»

textual
Листинг программы
 Computer c = new Computer()
            {
                CPUEnabled = true
            };
            c.Open();
 
            foreach (var hardware in c.Hardware)
            {
                //hardware.Update();
 
                if (hardware.HardwareType == HardwareType.CPU)
                {
 
                    foreach (var sensor in hardware.Sensors)
                        if (sensor.SensorType == SensorType.Temperature)
                            listBox1.Items.Add(sensor.Name + ": " + sensor.Value.GetValueOrDefault());
 
                }
            }

ИИ поможет Вам:


  • решить любую задачу по программированию
  • объяснить код
  • расставить комментарии в коде
  • и т.д
Попробуйте бесплатно

Оцени полезность:

11   голосов , оценка 4 из 5
Похожие ответы