.net中如何获取机器硬件信息(防软件复制版)
最近帮人做个关于软件注册的东东,对方一定要防止大量复制和防止注册码通用,所以就想到用机器的硬件信息进行注册码的生成,所以就牵涉到在获取机器硬件信息。。。
在.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”。