首页 诗词 字典 板报 句子 名言 友答 励志 学校 网站地图
当前位置: 首页 > 教程频道 > .NET > C# >

vs2010怎么得到当前计算机的硬件信息

2014-01-01 
vs2010如何得到当前计算机的硬件信息?原来vs 2005下用的代码不对了,说没有这个类。我想得到当前计算机的ip,

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];   
     arrbyte[3]   =   (Byte)(arrMAC[0]   >>   24);   
     arrbyte[2]   =   (Byte)(arrMAC[0]   >>   16);   
     arrbyte[1]   =   (Byte)(arrMAC[0]   >>   8);   
     arrbyte[0]   =   (Byte)arrMAC[0];   
    
     StringBuilder   strbMAC   =   new   StringBuilder();   
    
     for(int   intIndex   =   0   ;intIndex   <   6;intIndex   ++)   
     {   
      if(intIndex   >   0)   strbMAC.Append("-");   
      strbMAC.Append(arrbyte[intIndex].ToString("X2"));   
     }   
     strRet   =   strbMAC.ToString();   
    }   
   }   
    
   return   strRet;   
  }

这个只提供mac的获取方法,ip获取和硬盘号之类的,搜索下吧,网上这类内容还是很多的
[解决办法]
  public 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();
        }  

热点排行