请选择 进入手机版 | 继续访问电脑版

无忧编程_ASP.NET  / C# / PHP 程序员的软件世界

 找回密码
 立即注册

QQ登录

只需一步,快速开始

查看: 1170|回复: 1

【C#】获取机器码MachineCode方法详解

[复制链接]

369

主题

399

帖子

1651

积分

管理员

Rank: 9Rank: 9Rank: 9

积分
1651
发表于 2018-3-15 13:10:11 | 显示全部楼层 |阅读模式
【C#】获取机器码MachineCode方法详解
需求:机器码可以用于校验用户是否用的同一台电脑登录,比如在别的机器上登录时做强制下线(踢人下线)。通常在用户注册时,计算一次用户的机器码跟随注册信息一起发送给服务器。
定义规则:
机器码 = CPU序列号 + 硬盘ID + 网卡硬件地址
[C#] 纯文本查看 复制代码
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


来文转自:http://blog.csdn.net/qq_18995513/article/details/60872895


windows .net(C#+MSSQL) linux(php+mysql)
回复

使用道具 举报

369

主题

399

帖子

1651

积分

管理员

Rank: 9Rank: 9Rank: 9

积分
1651
 楼主| 发表于 2018-3-15 13:11:46 | 显示全部楼层
[C#] 纯文本查看 复制代码
using System; 
using System.Management; 
using System.IO; 
using System.Runtime.InteropServices; 
using System.Security.Cryptography; 
using System.Text; 
using Microsoft.Win32; 

windows .net(C#+MSSQL) linux(php+mysql)
回复 支持 反对

使用道具 举报

您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

Archiver|手机版|小黑屋|软件编程 ( 鄂ICP备11006601号鄂公网安备 42011102001337号 |

GMT+8, 2018-10-19 11:41 , Processed in 0.119350 second(s), 23 queries .

Powered by Discuz! X3.2

© 2001-2013 Comsenz Inc.

快速回复 返回顶部 返回列表