zoukankan      html  css  js  c++  java
  • 【C#】获取机器码MachineCode

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

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

    这里写图片描述

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

  • 相关阅读:
    金融系列10《发卡行脚本》
    金融系列9《发卡行认证》
    金融系列8《应用密文产生》
    ED/EP系列5《消费指令》
    ED/EP系列4《圈存指令》
    ED/EP系列2《文件结构》
    ED/EP系列1《简介》
    社保系列11《ATR》
    社保系列3《文件结构》
    社保系列2《文件系统》
  • 原文地址:https://www.cnblogs.com/guxin/p/csharp-how-to-get-machine-code.html
Copyright © 2011-2022 走看看