【C#】获取机器码MachineCode

    xiaoxiao2021-03-25  193

    需求:机器码可以用于校验用户是否用的同一台电脑登录,比如在别的机器上登录时做强制下线(踢人下线)。通常在用户注册时,计算一次用户的机器码跟随注册信息一起发送给服务器。

    机器码的作用看百度百科:

    定义规则: 机器码 = CPU序列号 + 硬盘ID + 网卡硬件地址

    public class MachineCode { static MachineCode machineCode; public static string GetMachineCodeString() { string machineCodeString = string.Empty; if (machineCode == null) { machineCode = new MachineCode(); } machineCodeString = "PC." + machineCode.GetCpuInfo() + "." + machineCode.GetHDid() + "." + machineCode.GetMoAddress(); return machineCodeString; } /// <summary> /// 获取cpu序列号 /// </summary> /// <returns> string </returns> public string GetCpuInfo() { string cpuInfo = ""; try { using (ManagementClass cimobject = new ManagementClass("Win32_Processor")) { ManagementObjectCollection moc = cimobject.GetInstances(); foreach (ManagementObject mo in moc) { cpuInfo = mo.Properties["ProcessorId"].Value.ToString(); mo.Dispose(); } } } catch (Exception) { throw; } return cpuInfo.ToString(); } /// <summary> /// 获取硬盘ID /// </summary> /// <returns> string </returns> public string GetHDid() { string HDid = ""; try { using (ManagementClass cimobject1 = new ManagementClass("Win32_DiskDrive")) { ManagementObjectCollection moc1 = cimobject1.GetInstances(); foreach (ManagementObject mo in moc1) { HDid = (string)mo.Properties["Model"].Value; mo.Dispose(); } } } catch (Exception) { throw; } return HDid.ToString(); } /// <summary> /// 获取网卡硬件地址 /// </summary> /// <returns> string </returns> public string GetMoAddress() { string MoAddress = ""; try { 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(); } } } catch (Exception) { throw; } return MoAddress.ToString(); } }

    原文地址:

    http://group.cnblogs.com/topic/32913.html

    转载请注明原文地址: https://ju.6miu.com/read-2546.html

    最新回复(0)