156 lines
5.3 KiB
C#
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();
|
|
}
|
|
}
|
|
}
|