using   System; 
using   System.Collections.Generic; 
using   System.Text; 
using   System.Management; 
public     class   Hardware 

  public   string   GetBIOSSerialNumber() 
                { 
                        string   result   =   string.Empty; 
                        ManagementObjectSearcher   searcher   = 
                                new   ManagementObjectSearcher( "Select   SerialNumber   From   Win32_BIOS "); 
                        ManagementObjectCollection   moc   =   searcher.Get();                         if   (moc.Count   >   0) 
                        { 
                                foreach   (ManagementObject   share   in   moc) 
                                { 
                                        result   =   share[ "SerialNumber "].ToString(); 
                                } 
                        } 
                        return   result; 
                } 

解决方案 »

  1.   

    好像没有错,我能得到计算机名。
     ManagementScope ms = new ManagementScope("\\\\.\\root\\cimv2" );
                ms.Connect();
                ManagementObjectSearcher searcher =
                                new ManagementObjectSearcher( "Select * From Win32_BIOS " );
                searcher.Scope = ms;
                ManagementObjectCollection moc = searcher.Get();
    这样试试看了
      

  2.   

    那是因为你查询出的字符集里面就根本没  "SerialNumber" ... 因该会有"name"这个属性   
      

  3.   

    public string GetBIOSSerialNumber()
            {
                //读取系统BIOS编号
                string result = string.Empty;
                ManagementObjectSearcher searcher = new ManagementObjectSearcher("Select SerialNumber From Win32_BIOS");
                ManagementObjectCollection moc = searcher.Get();            if (moc.Count > 0)
                {
                    foreach (ManagementObject share in moc)
                    {
                        result = share["SerialNumber"].ToString();
                    }
                }
                return result;
            }        public string GetBIOSNumber()
            {
                ManagementObjectSearcher searcher = new ManagementObjectSearcher("Select SerialNumber From Win32_BIOS");
                string biosNumber = null;
                foreach (ManagementObject mgt in searcher.Get())
                {
                    biosNumber = mgt["SerialNumber"].ToString();
                }
                return biosNumber;
            }   我的这两段代码现在可以正常运行了,result = share["SerialNumber "].ToString();以前不正确是这里多了一个空格,现在虽然能正常运行了,但返回的结果却是空,什么也没有,这又是怎么回事呀?