天天看点

获得硬盘 , 如果有两块也一并列出.

获得硬盘 , 如果有两块也一并列出.

/// <summary>
        /// 获取硬盘序列号
        /// </summary>
        public string GetDiskSerialNumber()
        {
            //这种模式在插入一个U盘后可能会有不同的结果,如插入我的手机时
            String HDid = "";
            ManagementClass mc = new ManagementClass("Win32_DiskDrive");
            ManagementObjectCollection moc = mc.GetInstances();
            foreach (ManagementObject mo in moc)
            {
                HDid = (string)mo.Properties["Model"].Value;//SerialNumber
                break;//这名话解决有多个物理盘时产生的问题,只取第一个物理硬盘
            }

            ManagementObjectSearcher mydisks = new ManagementObjectSearcher("SELECT * FROM Win32_DiskDrive");
            foreach (ManagementObject mydisk in mydisks.Get())
            {
                string HDID = mydisk["Model"].ToString();
                string HD1 = ( Convert.ToInt64(mydisk["Size"] )/1024/1024/1024).ToString();
                Console.WriteLine( string.Format( "Hdid = {0} , hd1 = {1} ",HDID ,HD1)); //Hdid = ATA KINGSTON SA400S3 SCSI Disk Device , hd1 = 447 
               // Hdid = ATA ST1000DM003 - 1ER1 SCSI Disk Device, hd1 = 931
            }

                return HDid;


            /*ManagementClass mc = new ManagementClass("Win32_PhysicalMedia");
            ManagementObjectCollection moc = mc.GetInstances();
            string str = "";
            foreach (ManagementObject mo in moc)
            {
                str = mo.Properties["SerialNumber"].Value.ToString();
                break;
            }
            return str;*/
        }