日期:2014-05-17  浏览次数:20723 次

vs2010如何得到当前计算机的硬件信息?
原来vs 2005下用的代码不对了,说没有这个类。
我想得到当前计算机的ip,硬盘号,mac地址,
用来记录用户的登录情况,避免有人乱用帐号修改数据。

------解决方案--------------------
估计是你的这个类丢失了,而不是功能不可用了。

using System.Management;
using System.Runtime.InteropServices; 
using System.Text;  
using System.Text.RegularExpressions; 

[DllImport("Iphlpapi.dll")]   
private static extern int SendARP(Int32 dest,Int32 host,ref Int32 mac,ref Int32 length);   
[DllImport("Ws2_32.dll")]   
private static extern Int32 inet_addr(string ip);  

string IPAddress=System.Net.Dns.GetHostByName(System.Net.Dns.GetHostName()).AddressList[0].ToString();
MessageBox.Show("ip: "+IPAddress);
string mac = this.GetMACFromIP(IPAddress);
MessageBox.Show("mac: "+mac);

private   string   GetMACFromIP(string   A_strIP)   
  {   
   string   strRet   =   "Unknown";   
    
   string   strIPPattern   =   @"^\d+\.\d+\.\d+\.\d+$";   
    
   Regex   objRex   =new   Regex(strIPPattern);   
    
   if(objRex.IsMatch(A_strIP)   ==   true)   
   {   
    Int32   intDest   =   inet_addr(A_strIP);   
    Int32   []   arrMAC   =   new   Int32[2];   
    Int32   intLen   =   6;   
    
    int   intResult   =   SendARP(intDest,0,ref   arrMAC[0],ref   intLen);   
    
    if(intResult   ==   0)   
    {   
     Byte   []   arrbyte   =   new   Byte[8];   
     arrbyte[5]   =   (Byte)(arrMAC[1]   >>   8);   
     arrbyte[4]   =   (Byte)arrMAC[1];