C# Management 类获取本机各种信息

1. 添加

System.Management 的引用

2. 在cs代码中初始化引用

ManagementClass mc = new ManagementClass("引用的WMI库名称");

可供引用的WMI类库在MSDN中可查到:

http://msdn.microsoft.com/en-us/library/aa394084(v=VS.85).aspx

3. 获取WMI实例

ManagementObjectCollection moc= vNetworkAdapter.GetInstances();

这里获取到的是WMI实例集合,例如,获取网络适配器信息,这里会获取到无线连接、有线连接、1394连接等与网络连接有关的实例集合。

4. 循环个实例获取其属性

foreach (ManagementObject mo in moc)
{

  //TODO: 获取各实例属性

  //实例各属性、方法、解释也可在http://msdn.microsoft.com/en-us/library/aa394084(v=VS.85).aspx里查到

}

5. 修改

修改需要用到 ManagementObject.InvokeMethod(MethodName, ManagementBaseObject, InvokeMethodOptions ); 方法

MethodName 为要执行的方法名称的,也可在上面MSDN的链接中查到;

ManagementBaseObject 不好解释,官方解释为“包含管理对象的基本元素。用作管理更具体的管理对象类的基类。”

InvokeMethodOptions 执行附加选项,可以为NULL。

 

完整实例:

复制代码
ManagementClass mc  =   new  ManagementClass( " Win32_NetworkAdapterConfiguration " );
ManagementObjectCollection moc 
=  mc.GetInstances();
foreach  (ManagementObject  mo  in  moc)
{
    
// 如果没有启用IP设置的网络设备则跳过   
     if  ( ! ( bool )mo[ " IPEnabled " ])
        
continue

    
//  获取属性
     string  caption  =  mo[ " Caption " ].ToString();               // 名称
     string [] addresses  =  ( string [])mo[ " IPAddress " ];          // IP地址
     string [] subnets  =  ( string [])mo[ " IPSubnet " ];             // 子网掩码
     string [] gateways  =  ( string [])mo[ " DefaultIPGateway " ];    // 网关
     string [] dnses  =  ( string [])mo[ " DNSServerSearchOrder " ];   // DNS

    ManagementBaseObject newIP;

    
//  修改IP及子网掩码
    newIP  =  mo.GetMethodParameters( " EnableStatic " );    
    newIP[
" IPAddress " =   new   string [] {  " 192.168.2.51 "  };
    newIP[
" SubnetMask " =   new   string [] {  " 255.255.255.0 "  };  // 修改IP同时,需要填写子网掩码
    mo.InvokeMethod( " EnableStatic " , newIP,  null );
    

    
//  设置网关地址 
    newIP  =  mo.GetMethodParameters( " SetGateways " );
    newIP[
" DefaultIPGateway " =   new   string [] {  " 192.168.2.1 "  };
    mo.InvokeMethod(
" SetGateways " , newIP,  null );

    
//  设置DNS 
    newIP  =  mo.GetMethodParameters( " SetDNSServerSearchOrder " );
    newIP[
" DNSServerSearchOrder " =   new   string [] {  " 192.168.1.10 "  };
    mo.InvokeMethod(
" SetDNSServerSearchOrder " , newIP,  null );
   }
 ///获取cpu序列号
        ///</summary>
        ///<returns> string </returns>
        public string GetCpuInfo()
        {
            string strID = "";
            try
            {
                ManagementClass mc = new ManagementClass("Win32_Processor");
                ManagementObjectCollection moc = mc.GetInstances();
                
                foreach (ManagementObject mo in moc)
                {
                    strID = mo.Properties["ProcessorId"].Value.ToString();
                    break;
                }
            }
            catch (Exception ex)
            {
                throw new Exception("WMI:GetCpuInfo" + ex.ToString() + ex.Data.ToString()+ ex.HelpLink.ToString());
            }
            return strID;
        }

        /// <summary>
        /// 获取主板的编号
        /// </summary>
        /// <returns></returns>
        public string GetMainBoardID()
        {
            ManagementClass mc = new ManagementClass("Win32_BaseBoard");
            ManagementObjectCollection moc = mc.GetInstances();
            string strID = null;
            foreach (ManagementObject mo in moc)
            {
                strID = mo.Properties["SerialNumber"].Value.ToString();
                break;
            }
            return strID;
        }

        /// <summary>
        /// 获取BIOS编号
        /// </summary>
        /// <returns></returns>
        public string GetBiosID()
        {
            ManagementClass mc = new ManagementClass("Win32_BIOS");
            ManagementObjectCollection moc = mc.GetInstances();
            string strID = null;
            foreach (ManagementObject mo in moc)
            {
                strID = mo.Properties["SerialNumber"].Value.ToString();
                break;
            }
            return strID;
        }
        ///<summary>
        ///   获取硬盘ID
        ///</summary>
        ///<returns> string </returns>
        public string GetHDid()
        {
            //ManagementClass mc = new ManagementClass("Win32_PhysicalMedia");
            网上有提到,用Win32_DiskDrive,但是用Win32_DiskDrive获得的硬盘信息中并不包含SerialNumber属性。  
            //ManagementObjectCollection moc = mc.GetInstances();
            //string strID = null;
            //foreach (ManagementObject mo in moc)
            //{
            //    strID = mo.Properties["SerialNumber"].Value.ToString();
            //    break;
            //} 
            //return strID;
            const int MAX_FILENAME_LEN = 256;
            int retVal = 0;
            GetVolumeInformation("c:\\",null,MAX_FILENAME_LEN,ref retVal,0,0,null,MAX_FILENAME_LEN);
            return retVal.ToString("X"); 

        }

        ///<summary>
        ///   获取网卡硬件地址
        ///</summary>
        ///<returns> string </returns>
        public string GetMacAddress()
        {
            string MoAddress = "0000000000";
            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();
                        MoAddress = MoAddress.Replace(":", "");
                    }
                    mo.Dispose();
                }
            }
            
            
            //NetworkInterface[] ntif = NetworkInterface.GetAllNetworkInterfaces();
            //if (ntif.Length > 0)
            //{
            //    string temp = ntif[0].GetPhysicalAddress().ToString();
            //}
            return MoAddress.ToString();
        }

  • 2
    点赞
  • 9
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值