如何在C#中获取硬盘唯一序列号

时间:2015-04-27 05:22:54

标签: c#

我开发了一个系统激活。为了生成请求代码,我使用了HDD ID,Bios ID和Processor ID。我使用以下代码来获取硬盘ID。

private string getHardDiskID()
{
     string hddID = null;
     ManagementClass mc = new ManagementClass("Win32_LogicalDisk");
     ManagementObjectCollection moc = mc.GetInstances();
     foreach (ManagementObject strt in moc)
     {
         hddID += Convert.ToString(strt["VolumeSerialNumber"]);
     }
     return hddID.Trim().ToString();
}

但是,如果我插入可移动磁盘,则该ID值会更改。如何获得硬盘驱动器的唯一序列号...? 提前谢谢..

3 个答案:

答案 0 :(得分:2)

您可以试试source

如源中所述,更好的解决方案是获取制造商提供的硬盘序列号。即使您格式化硬盘驱动器,此值也不会更改。

singleInstance

答案 1 :(得分:0)

检查以下代码以获取HDD Serial

  ManagementObjectSearcher objSearcher = new
    ManagementObjectSearcher("SELECT * FROM Win32_DiskDrive");

 objSearcher = new
    ManagementObjectSearcher("SELECT * FROM Win32_PhysicalMedia");

   int i = 0;

   foreach(ManagementObject wmi_HD in objSearcher.Get())
   {

    // get the hard drive from collection
    // using index
    HardDrive hd = (HardDrive)hdCollection[i];

    // get the hardware serial no.
    if (wmi_HD["SerialNumber"] == null)

     hd.SerialNo = "None";

    else

     hd.SerialNo = wmi_HD["SerialNumber"].ToString();

    ++i;

   }
  

您也可以键入" wbemtest"在Windows中运行。 WBEMTEST是工具   有助于运行WQL查询。

答案 2 :(得分:0)

ManagementObjectSearcher searcher;

searcher = new ManagementObjectSearcher("SELECT * FROM Win32_DiskDrive");
        string serial_number="";

        foreach (ManagementObject wmi_HD in searcher.Get())
        {

             serial_number = wmi_HD["SerialNumber"].ToString();


        }

        MessageBox.Show(serial_number);