• C#提取硬件信息HardwareHelper


     using Microsoft.Win32;
    using System;
    using System.Collections.Generic;
    using System.Management;
    using System.Net.NetworkInformation;
    using System.Net.Sockets;
    using System.Text;

    namespace Core.Helpers
    {
      public static class HardwareHelper
      {
        private static string hardwareUniqueID { get; set; }

        public static string GetHardwareUniqueID()
        {
          if (string.IsNullOrEmpty(HardwareHelper.hardwareUniqueID))
          {
            StringBuilder stringBuilder = new StringBuilder();
            stringBuilder.Append("UUID:" + HardwareHelper.GetUUID() + ";");
            stringBuilder.Append("CPU:" + HardwareHelper.GetCpuId() + ";");
            stringBuilder.Append("BIOS:" + HardwareHelper.GetBiosId() + ";");
            stringBuilder.Append("BASE:" + HardwareHelper.GetBaseId() + ";");
            stringBuilder.Append("Disk:" + HardwareHelper.GetHardDiskSerialNumber() + ";");
            stringBuilder.Append("MAC:" + HardwareHelper.GetMacAddress() + ";");
            HardwareHelper.hardwareUniqueID = MD5Helper.GetStringMd5(stringBuilder.ToString());
          }
          return HardwareHelper.hardwareUniqueID;
        }

        public static string GetMacAddress()
        {
          List macAddressList = HardwareHelper.GetMacAddressList();
          return macAddressList.Count > 0 ? macAddressList[0] : "";
        }

        public static List GetMacAddressList()
        {
          List macAddressList = new List();
          foreach (NetworkInterface networkInterface in NetworkInterface.GetAllNetworkInterfaces())
          {
            if (networkInterface.OperationalStatus == OperationalStatus.Up && networkInterface.NetworkInterfaceType != NetworkInterfaceType.Loopback && !macAddressList.Contains(networkInterface.GetPhysicalAddress().ToString()))
              macAddressList.Add(networkInterface.GetPhysicalAddress().ToString());
          }
          return macAddressList;
        }

        public static string GetLocalIPv4()
        {
          List localIpv4List = HardwareHelper.GetLocalIPv4List();
          return localIpv4List.Count > 0 ? localIpv4List[0] : "";
        }

        public static List GetLocalIPv4List()
        {
          List localIpv4List = new List();
          foreach (NetworkInterface networkInterface in NetworkInterface.GetAllNetworkInterfaces())
          {
            string name = "SYSTEM\\CurrentControlSet\\Control\\Network\\{4D36E972-E325-11CE-BFC1-08002BE10318}\\" + networkInterface.Id + "\\Connection";
            RegistryKey registryKey = Registry.LocalMachine.OpenSubKey(name, false);
            if (registryKey != null)
            {
              string str = registryKey.GetValue("PnpInstanceID", (object) "").ToString();
              Convert.ToInt32(registryKey.GetValue("MediaSubType", (object) 0));
              if (str.Length > 3 && str.Substring(0, 3) == "PCI")
              {
                foreach (UnicastIPAddressInformation unicastAddress in networkInterface.GetIPProperties().UnicastAddresses)
                {
                  if (unicastAddress.Address.AddressFamily == AddressFamily.InterNetwork && unicastAddress.IsDnsEligible)
                    localIpv4List.Add(unicastAddress.Address.ToString());
                }
              }
            }
          }
          return localIpv4List;
        }

        public static string GetUUID()
        {
          string uuid = (string) null;
          using (ManagementObjectSearcher managementObjectSearcher = new ManagementObjectSearcher("select * from Win32_ComputerSystemProduct"))
          {
            foreach (ManagementBaseObject managementBaseObject in managementObjectSearcher.Get())
            {
              using (managementBaseObject)
                uuid = managementBaseObject["UUID"].ToString();
            }
          }
          return uuid;
        }

        public static string GetHardDiskSerialNumber()
        {
          try
          {
            ManagementObjectSearcher managementObjectSearcher = new ManagementObjectSearcher("SELECT * FROM Win32_PhysicalMedia");
            string diskSerialNumber = "";
            using (ManagementObjectCollection.ManagementObjectEnumerator enumerator = managementObjectSearcher.Get().GetEnumerator())
            {
              if (enumerator.MoveNext())
                diskSerialNumber = enumerator.Current["SerialNumber"].ToString().Trim();
            }
            return diskSerialNumber;
          }
          catch
          {
            return "";
          }
        }

        private static string Identifier(string wmiClass, string wmiProperty, string wmiMustBeTrue)
        {
          string str = "";
          foreach (ManagementObject instance in new ManagementClass(wmiClass).GetInstances())
          {
            if (instance[wmiMustBeTrue].ToString() == "True")
            {
              if (str == "")
              {
                try
                {
                  str = instance[wmiProperty].ToString();
                  break;
                }
                catch
                {
                }
              }
            }
          }
          return str;
        }

        private static string Identifier(string wmiClass, string wmiProperty)
        {
          string str = "";
          foreach (ManagementObject instance in new ManagementClass(wmiClass).GetInstances())
          {
            if (str == "")
            {
              try
              {
                str = instance[wmiProperty].ToString();
                break;
              }
              catch
              {
              }
            }
          }
          return str;
        }

        public static string GetCpuId()
        {
          string cpuId = HardwareHelper.Identifier("Win32_Processor", "UniqueId");
          if (cpuId == "")
          {
            cpuId = HardwareHelper.Identifier("Win32_Processor", "ProcessorId");
            if (cpuId == "")
            {
              string str = HardwareHelper.Identifier("Win32_Processor", "Name");
              if (str == "")
                str = HardwareHelper.Identifier("Win32_Processor", "Manufacturer");
              cpuId = str + HardwareHelper.Identifier("Win32_Processor", "MaxClockSpeed");
            }
          }
          return cpuId;
        }

        public static string GetBiosId() => HardwareHelper.Identifier("Win32_BIOS", "Manufacturer") + HardwareHelper.Identifier("Win32_BIOS", "SMBIOSBIOSVersion") + HardwareHelper.Identifier("Win32_BIOS", "IdentificationCode") + HardwareHelper.Identifier("Win32_BIOS", "SerialNumber") + HardwareHelper.Identifier("Win32_BIOS", "ReleaseDate") + HardwareHelper.Identifier("Win32_BIOS", "Version");

        public static string GetBaseId() => HardwareHelper.Identifier("Win32_BaseBoard", "Model") + HardwareHelper.Identifier("Win32_BaseBoard", "Manufacturer") + HardwareHelper.Identifier("Win32_BaseBoard", "Name") + HardwareHelper.Identifier("Win32_BaseBoard", "SerialNumber");
      }
    }
     

  • 相关阅读:
    SpringBoot bbs (二) 抓取标签<img>并且打包
    解析ajax服务请求——客户端的数据配置解析——服务端node的接收数据的解析——其他状态——fetch——ajax封装fetch
    Mybatis-Plus
    Springboot 框架中加解密字段后存储数据库
    mysql 数据库清理缓存
    云原生DevOps篇:jenkins发送通知到企业微信机器人
    RedisTemplate操作ZSet的API
    容器化部署mariadb数据库
    Kubernetes 加入主节点报错
    java计算机毕业设计基于安卓Android/微信小程序的英语单词学习APP系统
  • 原文地址:https://blog.csdn.net/xdpcxq/article/details/134274697