Files
KJD/Store.Framework/Tools/HardwareTool.cs
T
2026-09-11 19:11:12 +08:00

156 lines
5.3 KiB
C#

using MAX.Core.Cryptography;
using System;
using System.Management;
namespace Store.Framework.Tools
{
/// <summary>
/// 系统信息
/// </summary>
public class HardwareTool
{
/// <summary>
/// 机器硬件码
/// </summary>
public static string HardWareCode { get; private set; } = "";
/// <summary>
/// 机器硬件码新版
/// </summary>
public static string HardWareCodeNew { get; private set; } = "";
/// <summary>
/// 机器硬件码v3
/// </summary>
public static string HardWareCodeV3 { get; private set; } = "";
/// <summary>
/// 硬件信息
/// </summary>
public static string MacInfo { get; private set; } = "";
/// <summary>
/// 获取机器码
/// </summary>
/// <returns></returns>
internal static void GetMacCode()
{
string sHostName = GethostName();
string sCpuSn = GetCPUSerialNumber();
string sDiskSn = GetDiskSerialNumber();
string sDiskSnNew = GetFirstDiskSnAndSignature();
string sOs = Environment.OSVersion.VersionString;
HardWareCode = MD5Helper.Md5_32(sHostName + sCpuSn + sDiskSn + sOs);
HardWareCodeNew = MD5Helper.Md5_32(sCpuSn + sDiskSn);
HardWareCodeV3 = MD5Helper.Md5_32(sCpuSn + sDiskSnNew);
}
/// <summary>
/// 取机器名
/// </summary>
/// <returns></returns>
private static string GethostName()
{
string sHostName = System.Net.Dns.GetHostName();
MacInfo += "|HostName:" + sHostName;
return sHostName;
}
/// <summary>
/// 获取cpu序列号
/// </summary>
/// <returns></returns>
private static string GetCPUSerialNumber()
{
string cpuSerialNumber = string.Empty;
ManagementClass mc = new ManagementClass("Win32_Processor");
ManagementObjectCollection moc = mc.GetInstances();
foreach (ManagementObject mo in moc)
{
cpuSerialNumber = mo["ProcessorId"].ToString();
MacInfo += "|CPU:" + mo["ProcessorId"].ToString() + "," + mo.Properties["Manufacturer"].Value.ToString().Trim() + "," + mo.Properties["Name"].Value.ToString().Trim();
break;
}
mc.Dispose();
moc.Dispose();
return cpuSerialNumber;
}
/// <summary>
/// 获取硬盘序列号
/// </summary>
/// <returns></returns>
private static string GetDiskSerialNumber()
{
ManagementObjectSearcher mos = new ManagementObjectSearcher();
mos.Query = new SelectQuery("Win32_DiskDrive", "", new string[] { "PNPDeviceID", "Signature" });
ManagementObjectCollection myCollection = mos.Get();
ManagementObjectCollection.ManagementObjectEnumerator em = myCollection.GetEnumerator();
em.MoveNext();
ManagementBaseObject moo = em.Current;
string id = "";
if (moo.Properties["signature"].Value != null)
{
id = moo.Properties["signature"].Value.ToString().Trim();
}
MacInfo += "|DiskSignature:" + id;
return id;
}
/// <summary>
/// 获取硬盘序列号-New
/// </summary>
/// <returns></returns>
private static string GetFirstDiskSnAndSignature()
{
ManagementObjectSearcher mos = new ManagementObjectSearcher();
mos.Query = new SelectQuery("Win32_DiskDrive", "Index=0", new string[] { "PNPDeviceID", "SerialNumber", "Signature" });
ManagementObjectCollection myCollection = mos.Get();
ManagementObjectCollection.ManagementObjectEnumerator em = myCollection.GetEnumerator();
em.MoveNext();
ManagementBaseObject moo = em.Current;
string sn = "";
string signature = "";
if (moo.Properties["SerialNumber"].Value != null)
{
sn = moo.Properties["SerialNumber"].Value.ToString().Trim();
}
if (moo.Properties["Signature"].Value != null)
{
signature = moo.Properties["Signature"].Value.ToString().Trim();
if (signature.Equals("0"))
{
signature = "";
}
}
MacInfo += "|Disk:" + sn + "," + signature + "," + moo.Properties["PNPDeviceID"].Value.ToString().Trim();
return sn + signature;
}
/// <summary>
/// 获取网卡硬件地址
/// </summary>
/// <returns></returns>
private static string GetMoAddress()
{
string MoAddress = " ";
using (ManagementClass mc = new ManagementClass("Win32_NetworkAdapterConfiguration"))
{
ManagementObjectCollection moc2 = mc.GetInstances();
foreach (ManagementObject mo in moc2)
{
//if ((bool)mo["IPEnabled"] == true)
MoAddress = mo["MacAddress"].ToString();
mo.Dispose();
}
}
return MoAddress.ToString();
}
}
}