ArrayList arr = new ArrayList();            string strQuery = "SELECT * From Win32_LogicalDisk";
            ManagementObjectSearcher query = new ManagementObjectSearcher(strQuery);
            ManagementObjectCollection queryCollection = query.Get();
            foreach (ManagementObject mo in queryCollection)
            {
                if (mo["DriveType"].ToString() == "2")
                {
                    arr.Add(mo["Name"].ToString());
                    string aaa = mo["SerialNumber"].ToString();
                    MessageBox.Show(aaa);
                    //MessageBox.Show(mo["Name"].ToString());
                    mo.
                }
            }我用上面的方法只可以获得可移动硬盘的名字("Name"),获得不了序列好("SerialNumber"). 请高手们指教指教指教!!!

解决方案 »

  1.   

    try
                {
                    ManagementObjectSearcher searcher = new ManagementObjectSearcher("SELECT * FROM Win32_PhysicalMedia");
                    String strHardDiskID = null;
                    foreach (ManagementObject mo in searcher.Get())
                    {
                        strHardDiskID = mo["SerialNumber"].ToString().Trim();
                        break;
                    }
                    MessageBox.Show(strHardDiskID);
                }
                catch
                {
                }
      

  2.   

    using System; 
    using System.Collections.Generic; 
    using System.ComponentModel; 
    using System.Data; 
    using System.Drawing; 
    using System.Text; 
    using System.Windows.Forms; 
    using System.Management; 
    using System.Net; 
    using System.Web; 
    using System.IO; 
    using System.Xml; namespace MyDriver 

        public partial class Form1 : Form 
         { 
            public Form1() 
             { 
                 InitializeComponent(); 
             }         private void btnRead_Click(object sender, EventArgs e) 
             { 
                 ManagementObject disk = null; 
                string driver = "win32_logicaldisk.deviceid=\""+this.txtDriver.Text+":\""; 
                try 
                 { 
                     disk = new ManagementObject(driver); 
                    this.txtDriverCode.Text = disk.GetPropertyValue("VolumeSerialNumber").ToString(); 
                 } 
                catch (Exception ex) 
                 { 
                     MessageBox.Show(ex.Message); 
                 } 
             } 
         }