机子挂了多块硬盘,如何得到如DG类似的硬盘分支结构即根据硬盘系列号得分每块硬盘的全部分区.现在可以得到分区,也可以得到硬盘系列号,但都是分开得的
我想得到硬盘系列号与分区对应关系,有没有同学做过得到系列号       public static List<string> GetHardDiskSerialNumber()
        {
            List<string> re = new List<string>();
            string hardDiskID = null;
            ManagementClass cimobject1 = new ManagementClass("Win32_DiskDrive");
            ManagementObjectCollection moc1 = cimobject1.GetInstances();
            foreach (ManagementObject mo in moc1)
            {
                if (hardDiskID == null)
                {
                    hardDiskID = mo.Properties["Model"].Value.ToString();
                }
                else
                {
                    hardDiskID =  mo.Properties["Model"].Value.ToString();
                }
                re.Add(hardDiskID);
            }
            return re;
        }
得到分区 System.IO.DriveInfo[] drives = System.IO.DriveInfo.GetDrives();
            foreach (System.IO.DriveInfo di in drives)
            {
                Console.WriteLine(di.Name+"  "+di.VolumeLabel);               
            }

解决方案 »

  1.   

    刚发现,Model只是硬盘的型号,没有得到真正系列号,那只是一个型号,
    真正的系列号在AIDA64软件中看到,找了半天也没有找到这样的类实现过,微软官方的也看了不少...
      

  2.   

    https://www.haolizi.net/example/view_11535.html
      

  3.   

    谢谢楼上的两位同学,都没有获得正确的硬盘系列号.2楼的同学只得到了温度等信息,我去官网看了一下,下载了测试一下,看不到过多的硬盘信息,3楼的同学,这种方式得到的不是硬盘的系列号,而是硬盘的型号【Model】.
      

  4.   

    Get Hard disk serial Number
      

  5.   

    谢谢楼上的兄台
    提供的程序 Hardware ID Extractor.exe我在window 7下可以运行,但在window 10不行,提示 

    The program needs to access the disk at low level but in some conditions Windows 7 UAC may block the program from doing so. Please temporary elevate program's rights. 
    我以管理员身份运行也没有获取,在VS下使用示例  
            [DllImport("HardwareIDExtractorC.dll")]
            public static extern String GetIDESerialNumber(byte DriveNumber);无法正常得到,但至少让我看到了希望,能正确得到SN
      

  6.   

    wmi可以搞定