如何使用c#从Bios获取CPU温度信息?

时间:2010-09-01 03:18:47

标签: monitoring c#

如何使用c#从Bios获取CPU温度信息我尝试了CPU temperature monitoring中的代码

但没有运气。 enumerator.Current抛出异常。

我怎样才能做到这一点?感谢。

错误:

"This system doesn't support the required WMI objects(1) - check the exception file 
Not supported 

 at System.Management.ManagementException.ThrowWithExtendedInfo(ManagementStatus errorCode)
 at System.Management.ManagementObjectCollection.ManagementObjectEnumerator.MoveNext()
 at CedarLogic.WmiLib.SystemStatistics.RefreshReadings() in D:\Downloads\TempMonitorSrc\TemperatureMonitorSln\WmiLib\SystemStatistics.cs:line 25
 at CedarLogic.WmiLib.SystemStatistics.get_CurrentTemperature() in D:\Downloads\TempMonitorSrc\TemperatureMonitorSln\WmiLib\SystemStatistics.cs:line 87
 at TemperatureMonitor.SystemTrayService.CheckSupport() in D:\Downloads\TempMonitorSrc\TemperatureMonitorSln\TemperatureMonitor\SystemTrayService.cs:line 260"

3 个答案:

答案 0 :(得分:1)

答案 1 :(得分:0)

我遇到了完全相同的问题:

https://superuser.com/questions/183282/cant-query-cpu-temperature-msacpi-thermalzonetemperature-on-windows-embedded-7

您引用的链接中的代码是正确的。我的.exe在Windows / XP和Windows / Vista上工作正常(只要我在Vista上以“管理员身份运行”)...但在Windows Embedded 7上出现WMI错误“不支持”时失败。

此时,我不知道问题是操作系统(WES7)还是我的主板(英特尔DH57jg)。

答案 2 :(得分:0)

虽然不理想,但我发现最接近/最好的解决方案是使用Speedfan(免费),它可以通过内存映射将其探测信息暴露给外部应用程序。有人做了C#转换:

Reading SpeedFan shared memory with C#

  

“建立在我所谈论的内容之上   上一篇文章,我们想说   访问SpeedFan提供的数据   来自C#应用程序。作为一个小   除此之外,从中读取信息   SMBus和其他低级接口   只能从内核完成。所以   SpeedFan等应用程序(HWMonitor,   珠穆朗玛峰等等)通常运行一个   内核级别的驱动程序,然后是   前端GUI呈现   信息。

     

对于SpeedFan,共享内存   (实际上它在技术上是一种记忆   我认为Windows上的映射文件是   用于内核之间的通信   驱动程序和用户空间GUI   应用。格式更好   该文件已被公开   SpeedFan的作者。所以,够了   说说,让我们看一些代码!“