С наступающим Новым годом! Форум программистов, компьютерный форум, киберфорум
Наши страницы
C# .NET
Войти
Регистрация
Восстановить пароль
 
Рейтинг 4.80/5: Рейтинг темы: голосов - 5, средняя оценка - 4.80
Nalik
113 / 69 / 36
Регистрация: 30.11.2012
Сообщений: 874
1

"Отказано в доступе" при попытке получить температуру процессора через WMI

08.09.2016, 22:12. Просмотров 954. Ответов 10
Метки wmi (Все метки)

Здравствуйте. Пытаюсь получить температуру процессора, а мне выбивает исключение.
C#
1
2
3
4
5
6
7
ManagementObjectSearcher searcher = new ManagementObjectSearcher(@"root\WMI", "SELECT * FROM MSAcpi_ThermalZoneTemperature");
                foreach (ManagementObject obj in searcher.Get())
                {
                    Double temp = Convert.ToDouble(obj["CurrentTemperature"].ToString());
                    temp = (temp - 2732) / 10.0;
                    MessageBox.Show(temp.ToString());
                }
Необработанное исключение типа "System.Management.ManagementException" в System.Management.dll
Дополнительные сведения: Отказано в доступе


Добавлено через 5 минут
Перезапустил программу от имени Администратора - заработало без исключений.
0
Лучшие ответы (1)
Similar
Эксперт
41792 / 34177 / 6122
Регистрация: 12.04.2006
Сообщений: 57,940
08.09.2016, 22:12
Ответы с готовыми решениями:

FileStream - "Отказано в доступе по пути."
Hi. Проблема такова: есть клиент и сервер. Клиент отсылает файл, сервер его...

Unmanaged c++ dll разной разрядности в проекте С# под платформу "Any CPU", Получить температуру с термодатчика
Нужно получить температуру с термодатчика Nvidia. Для получения температуры...

"Cannot implicitly convert type DbSet to ObjectSet" при попытке сконектить класс с абстрактным классом
Полный код ошибки: Cannot implicitly convert type...

При попытке зашифровать блок длиной около 250 байт выскакивает CryptographicException "Message too long"
Добрый день! Использую RSACryptoServiceProvider для шифрования данных. При...

Как получить температуру процессора?
Как получить температуру процессора?

10
Убежденный
Ушел с форума
Эксперт С++
16128 / 7275 / 1181
Регистрация: 02.05.2013
Сообщений: 11,637
Записей в блоге: 1
Завершенные тесты: 1
09.09.2016, 08:28 2
Многие почему-то считают, что MSAcpi_ThermalZoneTemperature вернет им температуру процессора.
И ошибаются. На большинстве современных платформ это поле содержит "мусор", никакого
отношения к температуре CPU не имеющий.
0
Nalik
113 / 69 / 36
Регистрация: 30.11.2012
Сообщений: 874
09.09.2016, 12:32  [ТС] 3
Цитата Сообщение от Убежденный Посмотреть сообщение
Многие почему-то считают, что MSAcpi_ThermalZoneTemperature вернет им температуру процессора.
И ошибаются. На большинстве современных платформ это поле содержит "мусор", никакого
отношения к температуре CPU не имеющий.
Наверное потому, что много где так написано и это вводит в заблуждение Читал темы, где вы писали, что средствами c# температуру процессора не получить. Скажите пожалуйста, а какими средствами получится? Я же к c# могу подключить dll нужного языка, в котором буду получать температуру.
0
Nalik
113 / 69 / 36
Регистрация: 30.11.2012
Сообщений: 874
09.09.2016, 12:40  [ТС] 4
Есть программа HWMonitor, она показывает температуру процессора и много чего другого. Вот мне нужны те же данные
0
Миниатюры
"Отказано в доступе" при попытке получить температуру процессора через WMI  
Убежденный
Ушел с форума
Эксперт С++
16128 / 7275 / 1181
Регистрация: 02.05.2013
Сообщений: 11,637
Записей в блоге: 1
Завершенные тесты: 1
09.09.2016, 12:53 5
Лучший ответ Сообщение было отмечено Nalik как решение

Решение

Цитата Сообщение от Nalik Посмотреть сообщение
Скажите пожалуйста, а какими средствами получится?
Чтобы читать температуру CPU, нужен драйвер, т.к. общение происходит
через MSR-регистры и прочие системные механизмы, которые на уровне
приложений, выполняющихся в ring-3, недоступны.
Причем должны быть еще "заточки" под конкретные архитектуры (Intel/AMD) и
модели процессоров, так что это не такая простая задача, как можно подумать.

Я обычно рекомендую всем интересующимся глянуть исходники программы
Open Hardware Monitor - они там используют драйвер WinRing0 как шлюз в ядро, а
код у них достаточно понятный, даже местами очевидный.
1
Nalik
113 / 69 / 36
Регистрация: 30.11.2012
Сообщений: 874
09.09.2016, 12:56  [ТС] 6
Цитата Сообщение от Убежденный Посмотреть сообщение
Open Hardware Monitor - они там используют драйвер WinRing0 как шлюз в ядро, а
код у них достаточно понятный, даже местами очевидный.
О, именно скриншот этой программы я вам и скинул Значит у них открытый код оказывается и даже не придется декомпилировать? (шутка) Спасибо за информацию)
0
iDReeM
60 / 64 / 18
Регистрация: 21.10.2015
Сообщений: 228
Завершенные тесты: 2
10.09.2016, 23:59 7
Цитата Сообщение от Убежденный Посмотреть сообщение
Чтобы читать температуру CPU, нужен драйвер
в чем проблема? https://github.com/openhardwaremonitor/openhardwaremonitor готовый пример с рабочим драйвером. даже на 64 подпись не просит.
0
Убежденный
Ушел с форума
Эксперт С++
16128 / 7275 / 1181
Регистрация: 02.05.2013
Сообщений: 11,637
Записей в блоге: 1
Завершенные тесты: 1
11.09.2016, 07:26 8
Цитата Сообщение от iDReeM Посмотреть сообщение
в чем проблема?
Например в том, что при выходе нового поколения процессоров под
них придется снова писать новый код (с вероятностью ~50%).
Либо ждать, пока Open Hardware Monitor обновят свой код.
А у них там последние исходники 2014 года, что не особо воодушевляет.
0
iDReeM
60 / 64 / 18
Регистрация: 21.10.2015
Сообщений: 228
Завершенные тесты: 2
11.09.2016, 18:09 9
Цитата Сообщение от Убежденный Посмотреть сообщение
Например в том, что при выходе нового поколения процессоров под
них придется снова писать новый код (с вероятностью ~50%).
Либо ждать, пока Open Hardware Monitor обновят свой код.
А у них там последние исходники 2014 года, что не особо воодушевляет.
а самому обновить не? разобраться не так сложно. нужно лишь время и терпение.
0
Убежденный
Ушел с форума
Эксперт С++
16128 / 7275 / 1181
Регистрация: 02.05.2013
Сообщений: 11,637
Записей в блоге: 1
Завершенные тесты: 1
11.09.2016, 18:16 10
Цитата Сообщение от iDReeM Посмотреть сообщение
разобраться не так сложно. нужно лишь время и терпение.
Ну я и не настаиваю на обратном.
Кто хочет - пускай разбирается, покупает процессоры для тестов, ставит на них эксперименты и т.д.
Плохо, что нет единого нормального API под это дело. Типа "GetCpuTemperature" или "GetCpuCoreTemperature",
все было бы просто и очевидно. А тут - городить огород с драйверами...
1
Psilon
Master of Orion
Эксперт .NET
6013 / 4866 / 902
Регистрация: 10.07.2011
Сообщений: 14,477
Записей в блоге: 5
Завершенные тесты: 4
12.09.2016, 23:08 11
Убежденный, даже в ARM нет... любопытно, лично мне тут чудится маркетинговая причина
0
12.09.2016, 23:08
MoreAnswers
Эксперт
37091 / 29110 / 5898
Регистрация: 17.06.2006
Сообщений: 43,301
12.09.2016, 23:08

Не удается получить температуру процессора
Я пытаюсь получить температуру процессора. В результате ошибка, если добавить...

WMI obj InvokeMethod "Terminate"
Суть проблемы - программа используя WMI получает список запущенных на удаленной...

Как получить через пространство имён "Reflection" данные (методы) из сборки (dll)?
Как получить через пространство имён "рефлекшн" данные(МЕТОДЫ) из сборки? Вот...


Искать еще темы с ответами

Или воспользуйтесь поиском по форуму:
11
Ответ Создать тему
Опции темы

КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin® Version 3.8.9
Copyright ©2000 - 2018, vBulletin Solutions, Inc.
Рейтинг@Mail.ru