DIY装机联盟-电脑故障排除|装机指南|硬件|配置|电脑知识

DIY装机联盟-电脑故障排除|装机指南|硬件|配置|电脑知识

http://www.jinanshengke.com

菜单导航

用C#获取硬盘序列号,CPU序列号,网卡MAC地址

作者: 庄吉 发布时间: 2019年10月11日 12:45:23

这个问题首先得考虑的就是你的硬盘是不是SCSI硬盘  
  如果是,那么根本不存在"物理序列号",只可能取得卷标的序列号  
   
  如果是卷标序列号,要注意的是每次格式化硬盘的时候这个序列号都会变  
  代码可以参考:  
  ?Id=25196  
   
  如果是物理序列号:  
  String   HDid;  
  ManagementClass   cimobject   =   new   ManagementClass("Win32_DiskDrive");  
  ManagementObjectCollection   moc   =   cimobject.GetInstances();  
  foreach(ManagementObject   mo   in   moc)  
  {  
  HDid   =   (string)mo.Properties["Model"].Value;  
  MessageBox.Show(HDid   );    
  }

如果是取得逻辑序列号(Format产生的那个),用WMI就可以,在引用中,添加system.mangement以后。    
  using   System.Management;  
  .....  
  ManagementObject     m_objDisk     =     new     ManagementObject(     "win32_logicaldisk.deviceid=\"c\"");          
  string     strSN     =     (string)m_objDisk.GetPropertyValue(     "VolumeSerialNumber     ");          
   
  如果要取得物理分区号,看这个帖子:  
  关于硬盘序列号,高手请留步啊.   (之一)  
  ?id=1143107  

683E0480(第一种方案取得)

ST3160815AS (第二个方案取得的)

5239355835565745202020202020202020202020(第三种方案取得)

private string[] GetMoc()
        
{
            
string[] str = new string[3];
            ManagementClass mcCpu 
= new ManagementClass("win32_Processor");
            ManagementObjectCollection mocCpu 
= mcCpu.GetInstances();
            
foreach(ManagementObject m in mocCpu)
            
{
                str[
0= m["ProcessorId"].ToString();
            }


            ManagementClass mcHD = new ManagementClass("win32_logicaldisk");
            ManagementObjectCollection mocHD 
= mcHD.GetInstances();
            
foreach(ManagementObject m in mocHD)
            
{
                
if(m["DeviceID"].ToString() == "C:")
                
{
                    str[
1= m["VolumeSerialNumber"].ToString();
                    
break;
                }

            }


            ManagementClass mcMAC = new ManagementClass("Win32_NetworkAdapterConfiguration");
            ManagementObjectCollection mocMAC 
= mcMAC.GetInstances();
            
foreach(ManagementObject m in mocMAC)
            
{
                
if((bool)m["IPEnabled"])
                
{
                    str[
2= m["MacAddress"].ToString();
                    
break;
                }

            }


            return str;
        }

以上为取硬盘逻辑分区序列号,重新格式化会改变

以下为硬盘物理序列号,需管理员权限,wmi

 Code

本文地址:http://www.jinanshengke.com/hyzx/220.html

请遵守互联网相关规定,不要发布广告和违法内容