最近帮人做个关于软件注册的东东,对方一定要防止大量复制和防止注册码通用,所以就想到用机器的硬件信息进行注册码的生成,所以就牵涉到在获取机器硬件信息。。。
在.net环境下(用VC#描述)获取机器的硬件信息,要用到一个类库(System.Management.dll),在解决方案资源管理器中添加System.Management 即可
我们可以将该程序编译成.dll文件,便于以后调用;
在程序代码中进行引用 using System.Management;
具体 代码为:
1.获取机器名:
public string GetHostName() { return System.Net.Dns.GetHostName(); }
2.获取CPU编号
public string GetCpuId()
{
ManagementClass mc = new ManagementClass("Win32_Processor"); ManagementObjectCollection moc = mc.GetInstances();
String strCpuID = null ; foreach( ManagementObject mo in moc ) { strCpuID = mo.Properties["ProcessorId"].Value.ToString(); break; } return strCpuID;
}
3.获取主硬盘编号
public string GetMainHardDiskId()
{ string str="";ManagementClass mcHD=new ManagementClass("win32_logicaldisk");ManagementObjectCollection mocHD=mcHD.GetInstances();foreach(ManagementObject m in mocHD){if(m["DeviceID"].ToString()=="C:"){str=m["VolumeSerialNumber"].ToString();break;}} return str;}
4.获取bios和mac地址,这个有点复杂,需要用到NETAPI32.DLL另外补充:5.获取网卡的mac地址 using System.Management; Public string GetNetWorkAdapterID(){ string str=""; ManagementClass mc = new ManagementClass("Win32_NetworkAdapterConfiguration"); ManagementObjectCollection moc = mc.GetInstances(); foreach(ManagementObject mo in moc) { if((bool)mo["IPEnabled"] == true) { //Console.WriteLine("MAC address\t{0}", mo["MacAddress"].ToString());str=mo["MacAddress"].ToString(); mo.Dispose(); } } return str;} --------------------------------------------- 如果系统提示找不到名字空间Management, 1. 在Solution Explorer中鼠标右键单击References,选择Add Reference… 2. 此时会弹出Add Reference对话框,选中.NET选项卡。 3. 选中System.Management,点select 4. 点击”OK”。