private void Form1_Load(object sender, EventArgs e)
        {
            MessageBox.Show("硬盘:" + C());
            MessageBox.Show("CPU:" + A());        }
        static string C()
        {
            System.Management.ManagementClass mc = new System.Management.ManagementClass("Win32_PhysicalMedia");
            //网上有提到,用Win32_DiskDrive,但是用Win32_DiskDrive获得的硬盘信息中并不包含SerialNumber属性。 Win32_PhysicalMedia              
            System.Management.ManagementObjectCollection moc = mc.GetInstances();
            if (moc.Count == 0)
            {
                mc = new System.Management.ManagementClass("Win32_DiskDrive");
                //网上有提到,用Win32_DiskDrive,但是用Win32_DiskDrive获得的硬盘信息中并不包含SerialNumber属性。 Win32_PhysicalMedia              
                moc = mc.GetInstances();
            }
            string strID = "";
            foreach (System.Management.ManagementObject mo in moc)
            {
                if (mo.Properties["SerialNumber"] != null
                    && mo.Properties["SerialNumber"].Value != null)
                {
                    strID += mo.Properties["SerialNumber"].Value.ToString();
                }
                break;
            }
            return strID.Trim();
        }以上代码在XP,WIN2008,WIN64可以正常
但是在Win2003取不到信息谢谢