C# 获取CPU序列号、网卡MAC地址、硬盘序列号封装类,用于软件绑定电脑

时间:2022-04-01 20:30:47
 using System.Management;

 namespace GLaLa
{
/// <summary>
/// hardware_mac 的摘要说明。
/// </summary>
class HardwareInfo
{
/// <summary>
/// 取机器名
/// </summary>
/// <returns></returns>
public string GethostName()
{
return System.Net.Dns.GetHostName();
} /// <summary>
/// 获取cpu序列号
/// </summary>
/// <returns></returns>
public 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();
break;
}
mc.Dispose();
moc.Dispose();
return cpuSerialNumber;
} /// <summary>
/// 获取硬盘序列号
/// </summary>
/// <returns></returns>
public 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 = moo.Properties["signature"].Value.ToString().Trim();
return id;
} /// <summary>
/// 获取网卡硬件地址
/// </summary>
/// <returns></returns>
public 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();
}
}
}

调用示例
/// <summary>
/// 应用程序的主入口点。
/// </summary>
[STAThread]
static void Main()
{
    if (File.Exists (Application.StartupPath + @"\WOWComputerInfo.ini") )
    {
        DecryptoMethod decry = new DecryptoMethod();
        string computerInfo = "";
        using (StreamReader streamReader = new StreamReader (Application.StartupPath +

@"\WOWComputerInfo.ini", System.Text.Encoding.Default) )
        {
            try
            {
                computerInfo = decry.Decrypto (streamReader.ReadToEnd() );
            }
            catch
            {
            }
        }
        string getComputerInfo = HardwareInfo.GetCPUSerialNumber() + HardwareInfo.GetDiskSerialNumber() + HardwareInfo.GetMoAddress();
        if (computerInfo != getComputerInfo)
        {
            MessageBox.Show ("程序不能在本机使用!", "提示", MessageBoxButtons.OK, MessageBoxIcon.Error);
            return;
        }
    }
    else
    {
        MessageBox.Show ("配置文件丢失或未配置,程序不能运行!", "提示", MessageBoxButtons.OK, MessageBoxIcon.Error);
        return;
    }
    Application.EnableVisualStyles();
    Application.SetCompatibleTextRenderingDefault (false);
    Application.Run (new frmMain() );
}

============================================================
C#获取系统版本、内存大小、显卡类型、cpu型号

 C# Code 
 
using System;
using System.Collections.Generic;
using System.Text;
using System.Web;
using System.Runtime.InteropServices;
private static CPU_INFO CpuInfo;
private static MEMORY_INFO MemoryInfo;
/// <summary>
/// 静态构造函数
/// </summary>
static ServerInfo()
{
    CpuInfo = new CPU_INFO();
    GetSystemInfo (ref CpuInfo);
    MemoryInfo = new MEMORY_INFO();
    GlobalMemoryStatus (ref MemoryInfo);
}
#region 服务器相关硬件信息
#region 定义API引用
/// <summary>
/// CPU信息
/// </summary>
/// <param name="cpuinfo">CPU_INFO</param>

public static extern void GetSystemInfo (ref CPU_INFO cpuinfo);

/// <summary>
/// 内存信息
/// </summary>
/// <param name="meminfo"></param>

public static extern void GlobalMemoryStatus (ref MEMORY_INFO meminfo);
#endregion
#region CPU相关
/// <summary>
/// 获取CPU数量
/// </summary>
public static string Count
{
    get { return CpuInfo.NumberOfProcessors.ToString(); }
}
/// <summary>
/// 获取CPU类型
/// </summary>
public static string Type
{
    get { return CpuInfo.ProcessorType.ToString(); }
}
/// <summary>
/// 获取CPU等级
/// </summary>
public static string Level
{
    get { return CpuInfo.ProcessorLevel.ToString(); }
}
/// <summary>
/// 获取CPUOemID
/// </summary>
public static string OemID
{
    get { return CpuInfo.OemID.ToString(); }
}
/// <summary>
/// CPU页面大小
/// </summary>
public static string PageSize
{
    get { return CpuInfo.PageSize.ToString(); }
}
#endregion
#region 内存相关
/// <summary>
/// 物理内存总大小
/// </summary>
public static string TotalPhys
{
    get { return MemoryInfo.TotalPhys.ToString(); }
}
/// <summary>
/// 可用物理内存
/// </summary>
public static string AvailPhys
{
    get { return MemoryInfo.AvailPhys.ToString(); }
}
/// <summary>
/// 交换页面总大小
/// </summary>
public static string TotalPageFile
{
    get { return MemoryInfo.TotalPageFile.ToString(); }
}
/// <summary>
/// 可交换页面大小
/// </summary>
public static string AvailPageFile
{
    get { return MemoryInfo.AvailPageFile.ToString(); }
}
/// <summary>
/// 虚拟内存总大小
/// </summary>
public static string TotalVirtual
{
    get { return MemoryInfo.TotalVirtual.ToString(); }
}
/// <summary>
/// 可用虚拟内存
/// </summary>
public static string AvailVirtual
{
    get { return MemoryInfo.AvailVirtual.ToString(); }
}
/// <summary>
/// 已经内存
/// </summary>
public static string Load
{
    get { return MemoryInfo.MemoryLoad.ToString(); }
}
#endregion
#endregion
/// <summary>
/// 定义CPU的信息结构
/// </summary>

public struct CPU_INFO
{
    public uint OemID;
    public uint PageSize;
    public uint MinimumApplicationAddress;
    public uint MaximumApplicationAddress;
    public uint ActiveProcessorMask;
    public uint NumberOfProcessors;
    public uint ProcessorType;
    public uint AllocationGranularity;
    public uint ProcessorLevel;
    public uint ProcessorRevision;
}
/// <summary>
/// 定义内存的信息结构
/// </summary>

public struct MEMORY_INFO
{
    public uint Length;
    public uint MemoryLoad;
    public uint TotalPhys;
    public uint AvailPhys;
    public uint TotalPageFile;
    public uint AvailPageFile;
    public uint TotalVirtual;
    public uint AvailVirtual;
}
--------------------------------------------------------
用WMI,在.Net下就是System.Management名称空间,可以获得计算机几乎所有的硬件信息
给你一个类:
很好用的;
using System;
using System.Management;
namespace Soyee.Comm
{
    /// <summary>
    /// Computer Information
    /// </summary>
    public class Computer
    {
        public string CpuID;
        public string MacAddress;
        public string DiskID;
        public string IpAddress;
        public string LoginUserName;
        public string ComputerName;
        public string SystemType;
        public string TotalPhysicalMemory; //单位:M
        private static Computer _instance;
        public static Computer Instance()
        {
            if (_instance == null)
                _instance = new Computer();
            return _instance;
        }
        protected Computer()
        {
            CpuID = GetCpuID();
            MacAddress = GetMacAddress();
            DiskID = GetDiskID();
            IpAddress = GetIPAddress();
            LoginUserName = GetUserName();
            SystemType = GetSystemType();
            TotalPhysicalMemory = GetTotalPhysicalMemory();
            ComputerName = GetComputerName();
        }
        string GetCpuID()
        {
            try
            {
                //获取CPU序列号代码
                string cpuInfo = "";//cpu序列号
                ManagementClass mc = new ManagementClass ("Win32_Processor");
                ManagementObjectCollection moc = mc.GetInstances();
                foreach (ManagementObject mo in moc)
                {
                    cpuInfo = mo.Properties.Value.ToString();
                }
                moc = null;
                mc = null;
                return cpuInfo;
            }
            catch
            {
                return "unknow";
            }
        }
        string GetMacAddress()
        {
            try
            {
                //获取网卡硬件地址
                string mac = "";
                ManagementClass mc = new ManagementClass ("Win32_NetworkAdapterConfiguration");
                ManagementObjectCollection moc = mc.GetInstances();
                foreach (ManagementObject mo in moc)
                {
                    if ( (bool) mo == true)
                    {
                        mac = mo.ToString();
                        break;
                    }
                }
                moc = null;
                mc = null;
                return mac;
            }
            catch
            {
                return "unknow";
            }
        }

string GetIPAddress()
        {
            try
            {
                //获取IP地址
                string st = "";
                ManagementClass mc = new ManagementClass ("Win32_NetworkAdapterConfiguration");
                ManagementObjectCollection moc = mc.GetInstances();
                foreach (ManagementObject mo in moc)
                {
                    if ( (bool) mo == true)
                    {
                        //st=mo.ToString();
                        System.Array ar;
                        ar = (System.Array) (mo.Properties.Value);
                        st = ar.GetValue (0).ToString();
                        break;
                    }
                }
                moc = null;
                mc = null;
                return st;
            }
            catch
            {
                return "unknow";
            }
        }

string GetDiskID()
        {
            try
            {
                //获取硬盘ID
                String HDid = "";
                ManagementClass mc = new ManagementClass ("Win32_DiskDrive");
                ManagementObjectCollection moc = mc.GetInstances();
                foreach (ManagementObject mo in moc)
                {
                    HDid = (string) mo.Properties.Value;
                }
                moc = null;
                mc = null;
                return HDid;
            }
            catch
            {
                return "unknow";
            }
        }
        /// <summary>
        /// 操作系统的登录用户名
        /// </summary>
        /// <returns></returns>
        string GetUserName()
        {
            try
            {
                string st = "";
                ManagementClass mc = new ManagementClass ("Win32_ComputerSystem");
                ManagementObjectCollection moc = mc.GetInstances();
                foreach (ManagementObject mo in moc)
                {
                    st = mo.ToString();
                }
                moc = null;
                mc = null;
                return st;
            }
            catch
            {
                return "unknow";
            }
        }

/// <summary>
        /// PC类型
        /// </summary>
        /// <returns></returns>
        string GetSystemType()
        {
            try
            {
                string st = "";
                ManagementClass mc = new ManagementClass ("Win32_ComputerSystem");
                ManagementObjectCollection moc = mc.GetInstances();
                foreach (ManagementObject mo in moc)
                {
                    st = mo.ToString();
                }
                moc = null;
                mc = null;
                return st;
            }
            catch
            {
                return "unknow";
            }
        }
        /// <summary>
        /// 物理内存
        /// </summary>
        /// <returns></returns>
        string GetTotalPhysicalMemory()
        {
            try
            {
                string st = "";
                ManagementClass mc = new ManagementClass ("Win32_ComputerSystem");
                ManagementObjectCollection moc = mc.GetInstances();
                foreach (ManagementObject mo in moc)
                {
                    st = mo.ToString();
                }
                moc = null;
                mc = null;
                return st;
            }
            catch
            {
                return "unknow";
            }
        }
        /// <summary>
        /// 获取计算机名
        /// </summary>
        /// <returns></returns>
        string GetComputerName()
        {
            try
            {
                return System.Environment.GetEnvironmentVariable ("ComputerName");
            }
            catch
            {
                return "unknow";
            }
        }
        /// <summary>
        /// 获取用户名机名
        /// </summary>
        /// <returns></returns>
        string GetComputerName()
        {
            try
            {
                return System.Environment.GetEnvironmentVariable ("UserName");
            }
            catch
            {
                return "unknow";
            }
        }
    }
}

C# 获取CPU序列号、网卡MAC地址、硬盘序列号封装类,用于软件绑定电脑的更多相关文章

  1. VC&plus;&plus;获取网卡MAC、硬盘序列号、CPU ID、BIOS编号

    以下代码可以取得系统特征码(网卡MAC.硬盘序列号.CPU ID.BIOS编号) BYTE szSystemInfo[4096]; // 在程序执行完毕后,此处存储取得的系统特征码 UINT uSys ...

  2. 获取网卡MAC、硬盘序列号、CPU&lowbar;ID、BIOS编号

    抄来的 获取网卡MAC.硬盘序列号.CPU ID.BIOS编号 本文中所有原理及思想均取自网络,有修改.其中获取硬盘序列号.获取CPU编号.获取BIOS编号的原始代码的著作权归各自作者所有. 以下代码 ...

  3. 取计算机特征码(网卡MAC、硬盘序列号、CPU ID、BIOS编号)

    以下代码可以取得系统特征码(网卡MAC.硬盘序列号.CPU ID.BIOS编号) BYTE szSystemInfo[4096]; // 在程序执行完毕后,此处存储取得的系统特征码    UINT u ...

  4. C&num; 中获取CPU序列号&sol;网卡mac地址

    1.cpu序列号2.mac序列号3.硬盘id在给软件加序列号时这三个应该是最有用的,可以实现序列号和机器绑定,对保护软件很有好处.哈哈.   using System; using System.Ma ...

  5. 获取CPU序列号、网卡MAC地址、硬盘序列号

    <pre name="code" class="csharp"> using System; using System.Collections; u ...

  6. 转&colon; 通过WMI获取网卡MAC地址、硬盘序列号、主板序列号、CPU ID、BIOS序列号

    最近由于项目的需要,需要在程序中获取机器的硬盘序列号和MAC地址等信息,在C#下,可以很容易的获得这些信息,但是在C++程序中感觉比较麻烦.经过百度,发现很多大虾都是通过WMI来获取这些硬件信息的,网 ...

  7. (转)通过WMI获取网卡MAC地址、硬盘序列号、主板序列号、CPU ID、BIOS序列号

    最近由于项目的需要,需要在程序中获取机器的硬盘序列号和MAC地址等信息,在C#下,可以很容易的获得这些信息,但是在C++程序中感觉比较麻烦.经过百度,发现很多大虾都是通过WMI来获取这些硬件信息的,网 ...

  8. MD5做为文件名。机器唯一码有电脑的CPU信息和MAC地址,这两个信息需要在linux或unix系统下才能获取吧。

    可以采用机器(电脑)唯一码 + 上传IP + 当前时间戳 + GUID ( + 随机数),然后MD5做为文件名.机器唯一码有电脑的CPU信息和MAC地址,这两个信息需要在linux或unix系统下才能 ...

  9. Python 获取 网卡 MAC 地址

    /*********************************************************************** * Python 获取 网卡 MAC 地址 * 说明: ...

随机推荐

  1. eclipse中一些设置&amp&semi;配置项

    在学习过程中出现的一些问题,以备忘: 1.eclipse中手动生成项目目录结构                 按照这个项目结构建立文件夹,build path -configure build pa ...

  2. player&period;swf播放flv方式

    <embed src="../images/player.swf" allowFullScreen="true" quality="high&q ...

  3. Echarts-画堆积柱状图,折线图

    导入echarts包 <script src='../scripts/libraries/echarts/echarts-all.js'></script> js var my ...

  4. ubuntu下ROS安装时sudo rosdep init和rosdep update的解决方法

    问题: 在ubuntu上多次安装matlab选择合适的版本来调用摄像头,终于把系统搞坏了,重装系统后,ROS无法安装,每次安装到sudo rosdep init和rosdep update报错的问题, ...

  5. 用Bouncy Castle的C&num;版API产生公钥和私钥

    开源API链接地址:The Legion of the Bouncy Castle Bouncy Castle,简称为BC,原本是java的一个开源JCE提供者,后来也提供了C#版本的API,我下载其 ...

  6. OA项目实战(二) 开发准备

    上次的博文OA系统实践(一) 概述中,我们已经了解了OA的相关概念.从本次博文开始,我们做一个简单的OA实例. 在OA开发之前,有几个工作们需要提前做.一个是对需求进行分析,另一个是对开发环境进行选择 ...

  7. bzoj1053

    不难发现,要让约数尽可能多,那么素因子越小的的指数一定越大可能的素因数的种类也不超过10种然后直接暴搜即可 ..] ,,,,,,,,,); var n,ant,ans:int64; procedure ...

  8. 2&period;1确定一个char包含何种字符

    知识点: 1.char.IsControl 2.char.IsPunctuation 3.char.IsSurrogate 4.char.IsWhitespace 5.char.IsDigit 6.c ...

  9. 一步一步在Windows中使用MyCat负载均衡 下篇

    之前在 一步一步在Windows中使用MyCat负载均衡 上篇 中已经讲了如何配置出MyCat.下面讲其相关的使用. 五.配置MyCat-eye 对于MyCat监控官网还提供一个MyCat-eye w ...

  10. 蓝桥杯—ALGO-2 最小最大公倍数

    问题描述已知一个正整数N,问从1~N中任选出三个数,他们的最小公倍数最大可以为多少. 输入格式输入一个正整数N. 输出格式输出一个整数,表示你找到的最小公倍数.样例输入9样例输出504数据规模与约定1 ...