代码如下:
using System;
using System.Collections.Generic;
using System.ComponentModel;
using System.Data;
using System.Drawing;
using System.Linq;
using System.Text;
using System.Windows.Forms;
using System.Management;namespace Ex189_读取磁盘序列号
{
    public partial class Form1 : Form
    {
        public Form1()
        {
            InitializeComponent();
        }        private void Form1_Load(object sender, EventArgs e)
        {
            try
            {
                string hardDiskID = null;
                ManagementObjectSearcher searcher = new ManagementObjectSearcher("select * from Win32_logicaldisk");
                foreach (ManagementObject id in searcher.Get())
                {
                    hardDiskID = id.GetPropertyValue("VolumeSerialNumber").ToString().Trim();
                    this.label1.Text += string.Format("磁盘序列号为{0}    \t\n", hardDiskID);
                }
            }
            catch (Exception ex)
            {
                MessageBox.Show(ex.Message);
            }
        }   
    }
}

解决方案 »

  1.   

    id.GetPropertyValue("VolumeSerialNumber") is null, tostring 就错了.
     string hardDiskID = null;
                    ManagementObjectSearcher searcher = new ManagementObjectSearcher("select * from Win32_logicaldisk");
                    if (searcher != null)
                    {
                        foreach (ManagementObject id in searcher.Get())
                        {
                            if (id.GetPropertyValue("VolumeSerialNumber") != null)
                            {
                                hardDiskID += id.GetPropertyValue("VolumeSerialNumber").ToString().Trim();
                            }                    }                    Console.WriteLine("磁盘序列号为{0} \t\n", hardDiskID);
                        
                    }
      

  2.   

        //获取硬盘的物理id号
            public static string getDiskMac()
            {
                try
                {  
                    string HDid = null;  
                    ManagementClass cimobject = new ManagementClass("Win32_DiskDrive");   
                    ManagementObjectCollection moc = cimobject.GetInstances();   
                    foreach(ManagementObject mo in moc)   
                    {   
                        HDid = (string)mo.Properties["PNPDeviceID"].Value;  
                        break;
                    }
                    return HDid;
                }
                catch
                {
                    return "";
                }
            }
      

  3.   

    GetPropertyValue估计没得到,返回空置