Задать вопрос
svrap
@svrap

Как исправить ошибку «ManagementException не обработано» в VS2012?

Использую код для определения температуры процессора
using System;
using System.Collections.Generic;
using System.Text;
using System.Management;    
using System.Management.Instrumentation; 

namespace temperature
{
    class Program
    {
        static void Main(string[] args)
        {
            ManagementObjectSearcher searcher = new ManagementObjectSearcher(@"root\WMI", "SELECT * FROM MSStorageDriver_ATAPISmartData WHERE Active=True");
            foreach (ManagementObject obj in searcher.Get())
            {
                byte[] vendorSpec = obj["VendorSpecific"] as byte[];
                if (vendorSpec != null)
                {
                    Console.WriteLine("Температура = " + vendorSpec[115]);
                }

            }

            Console.ReadKey();
        }
    }
}


При запуске выдает ошибку ManagementException не обработано, скриншот прикреплён.

Сразу скажу, References System.Management и System.Management.Instrumentation подключил. Прошу помощи.
  • Вопрос задан
  • 799 просмотров
Подписаться 1 Оценить Комментировать
Решения вопроса 1
Не хватает прав доступа. Запустите полученный exe от имени администратора, или запустите всю Visual Studio от имени админа. Рекомендую тестировать все wmi-запросы с помощью wbemtest или командлета powershell Get-WmiObject
Ответ написан
Комментировать
Пригласить эксперта
Ответы на вопрос 2
@d-stream
Готовые решения - не подаю, но...
class Program
    {
        static void Main(string[] args)
        {
try{
            ManagementObjectSearcher searcher = new ManagementObjectSearcher(@"root\WMI", "SELECT * FROM MSStorageDriver_ATAPISmartData WHERE Active=True");
            foreach (ManagementObject obj in searcher.Get())
            {
                byte[] vendorSpec = obj["VendorSpecific"] as byte[];
                if (vendorSpec != null)
                {
                    Console.WriteLine("Температура = " + vendorSpec[115]);
                }

            }

            Console.ReadKey();
}
catch(Exception ex)      {
 ex.message - будет содержать текст сообщения об ошибке и его можно вывести через messagebox или хотя бы посмотреть в отладке
}
  }
    }
Ответ написан
Комментировать
Ваш ответ на вопрос

Войдите, чтобы написать ответ

Похожие вопросы