win11 c#硬件温度获取

win10温度获取的方法,在win11已经不行了
下面是win11获取温度代码 先安装包 LibreHardwareMonitorLib 用管理员身份运行

using LibreHardwareMonitor.Hardware;
using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using System.Threading;
using System.Threading.Tasks;

namespace 硬件温度2
{
    public class UpdateVisitor : IVisitor
    {
        public void VisitComputer(IComputer computer)
        {
            computer.Traverse(this);
        }
        public void VisitHardware(IHardware hardware)
        {
            hardware.Update();
            foreach (IHardware subHardware in hardware.SubHardware) subHardware.Accept(this);
        }
        public void VisitSensor(ISensor sensor) { }
        public void VisitParameter(IParameter parameter) { }
    }

    
    internal class Program
    {
        public static void Monitor()
        {
            Computer computer = new Computer
            {
                IsCpuEnabled = true,
                IsGpuEnabled = true,
                IsMemoryEnabled = true,
                IsMotherboardEnabled = true,
                IsControllerEnabled = true,
                IsNetworkEnabled = true,
                IsStorageEnabled = true
            };

            computer.Open();
            computer.Accept(new UpdateVisitor());

            foreach (IHardware hardware in computer.Hardware)
            {
                Console.WriteLine("Hardware: {0}", hardware.Name);

                foreach (IHardware subhardware in hardware.SubHardware)
                {
                    Console.WriteLine("\tSubhardware: {0}", subhardware.Name);

                    foreach (ISensor sensor in subhardware.Sensors)
                    {
                        Console.WriteLine("\t\tSensor: {0}, value: {1}", sensor.Name, sensor.Value);
                    }
                }

                foreach (ISensor sensor in hardware.Sensors)
                {
                    Console.WriteLine("\tSensor: {0}, value: {1}", sensor.Name, sensor.Value);
                }
            }

            computer.Close();
        }
        static void Main(string[] args)
        {
            Monitor();
            Console.ReadKey();
        }
    }
}

C#获取硬件的唯一标识可以使用`System.Management`命名空间中的`ManagementObjectSearcher`类和`Win32_ComputerSystemProduct`类来实现。 首先,您需要在代码文件中添加对`System.Management`命名空间的引用: ```csharp using System.Management; ``` 然后,可以使用以下代码获取计算机系统产品的唯一标识: ```csharp public static string GetHardwareUniqueID() { string hardwareID = string.Empty; ManagementObjectSearcher searcher = new ManagementObjectSearcher("SELECT * FROM Win32_ComputerSystemProduct"); ManagementObjectCollection collection = searcher.Get(); foreach (ManagementObject obj in collection) { hardwareID = obj.Properties["UUID"].Value.ToString(); break; // 只获取第一个计算机系统产品 } return hardwareID; } ``` 上述代码使用了`ManagementObjectSearcher`类来搜索并获取`Win32_ComputerSystemProduct`类的实例。然后,通过遍历集合获取第一个实例,并从中获取唯一标识属性(UUID)的值。 请注意,获取硬件唯一标识可能因不同硬件和操作系统而异。在某些情况下,可能无法获取到唯一标识或者获取到的标识不是硬件相关的。此外,需要以管理员权限运行应用程序才能访问这些硬件信息。 另外,硬件唯一标识不适合用于身份验证或安全目的。它仅用于标识硬件设备,并不保证其唯一性。如果需要进行身份验证或安全相关的操作,建议使用其他更可靠的方法。
评论 2
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值