您的位置:首页 > 其它

.net中如何获取机器硬件信息(防软件复制版)

2007-04-03 17:46 501 查看
最近帮人做个关于软件注册的东东,对方一定要防止大量复制和防止注册码通用,所以就想到用机器的硬件信息进行注册码的生成,所以就牵涉到在获取机器硬件信息。。。

在.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”。
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: