C# 使用开放式硬件监视器获取CPU温度

C# 使用开放式硬件监视器获取CPU温度,c#,openhardwaremonitor,C#,Openhardwaremonitor,我正在尝试使用OpenHardwareMonitorLib DLL获取CPU\cores的温度,但是这不会为我返回温度 我环顾四周,发现这个问题几乎无处不在,但我无法让它发挥作用 如果有人能告诉我这个问题出在哪里,我将不胜感激 这是我的代码: using System; using System.Linq; using System.Management; using OpenHardwareMonitor.Collections; using OpenHardwareMonitor.Hardw

我正在尝试使用OpenHardwareMonitorLib DLL获取CPU\cores的温度,但是这不会为我返回温度

我环顾四周,发现这个问题几乎无处不在,但我无法让它发挥作用

如果有人能告诉我这个问题出在哪里,我将不胜感激

这是我的代码:

using System;
using System.Linq;
using System.Management;
using OpenHardwareMonitor.Collections;
using OpenHardwareMonitor.Hardware;
using OxyPlot;
using OxyPlot.Series;


namespace cs_TempReader
{
    class Program
    {
        private DateTime now;
        protected readonly ListSet<ISensor> active = new ListSet<ISensor>();
        public event SensorEventHandler SensorAdded;
        public event SensorEventHandler SensorRemoved;

        protected virtual void ActivateSensor(ISensor sensor)
        {
            if (active.Add(sensor))
                if (SensorAdded != null)
                    SensorAdded(sensor);
        }

        private static void Main(string[] args)
        {
            var myComputer = new Computer();

            myComputer.CPUEnabled = true;
            myComputer.ToCode();
            myComputer.Open();

            foreach (var hardwareItem in myComputer.Hardware)
            {
                hardwareItem.Update();
                hardwareItem.GetReport();

                Console.WriteLine(hardwareItem.GetReport());

                var series = new LineSeries();

                foreach (var sensor in hardwareItem.Sensors)
                {
                    if (sensor.SensorType == SensorType.Temperature)
                    {
                        Console.WriteLine("{0} {1} {2} = {3}", sensor.Name, sensor.Hardware, sensor.SensorType, sensor.Value);

                    }

                }
            }
        }
    }
}
使用系统;
使用System.Linq;
使用制度管理;
使用OpenHardwareMonitor.Collections;
使用OpenHardwareMonitor.Hardware;
使用氧图;
使用OxyPlot.系列;
命名空间cs_临时读取器
{
班级计划
{
现在是私人约会时间;
受保护的只读列表集活动=新建列表集();
添加了公共事件传感器EventHandler传感器;
移除公共事件传感器EventHandler传感器;
受保护虚拟空穴激活传感器(ISensor传感器)
{
如果(激活。添加(传感器))
如果(已添加传感器!=null)
添加传感器(传感器);
}
私有静态void Main(字符串[]args)
{
var myComputer=新计算机();
myComputer.CPUEnabled=true;
myComputer.ToCode();
myComputer.Open();
foreach(我的计算机硬件中的var hardwareItem)
{
hardwareItem.Update();
hardwareItem.GetReport();
Console.WriteLine(hardwareItem.GetReport());
var series=新的LineSeries();
foreach(硬件中的var传感器电磁传感器)
{
if(sensor.SensorType==SensorType.Temperature)
{
Console.WriteLine(“{0}{1}{2}={3}”,sensor.Name,sensor.Hardware,sensor.SensorType,sensor.Value);
}
}
}
}
}
}

我的最终目标是能够将其绑定到更大的应用程序中

您需要在应用程序中请求更高的执行级别,以便此代码能够正常工作

为此,您必须:

  • 右键单击项目
  • 单击添加
  • 单击新项目…
  • 在搜索栏上键入清单
  • 单击确定
之后,您必须更改清单上的此行:

<requestedExecutionLevel level="asInvoker" uiAccess="false" />

为此:

<requestedExecutionLevel level="highestAvailable" uiAccess="false" />

可能需要强制应用程序以管理员身份运行,然后代码才能正常工作

右键单击项目>添加新项,选择“应用程序清单文件”

改变

<requestedExecutionLevel>

元素到:

<requestedExecutionLevel level="requireAdministrator" uiAccess="false" />

这是教程,你可以看看


OHM应用程序工作正常吗?查看其他一些OpenHardwareMonitor标记的问题,我发现其中一个答案表明,由于API调用的性质,您需要使用管理员权限运行VS。@Simon:编辑器正确地从问题中删除了您的签名,因为您的用户名会自动显示在问题的右下角。谢谢!如果我刚才那样做的话,我昨天就可以把这个包好了。。。。我想这将进入的应用程序也需要提升权限。我只是想从这项工作的新颖性来提升它。听起来很酷!