【C#】获取机器码MachineCode

来源:互联网 发布:矿山塌陷预测 软件 编辑:程序博客网 时间:2024/06/01 09:15

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

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

这里写图片描述

定义规则:
机器码 = 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

0 0