1. 程式人生 > >程式設計方式獲取計算機主機板序列號等的實驗

程式設計方式獲取計算機主機板序列號等的實驗

程式碼獲取計算機硬體資訊,程式碼如下

using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using   System.Management; 
using   Microsoft.Win32; 


namespace GetHardDiskID_BIOSNumber
{
    class Program
    {
        static void Main(string[] args)
        {
            //PrintMotherBoardInfo();
            Console.WriteLine("主機板序號:" + GetMotherBoardSerialNumber());
            Console.WriteLine("CPU序列號程式碼:"+GetCPUMessage());
            Console.WriteLine("網絡卡硬體地址"+GetMacMessage());
            GetHardMessage();
            Console.Read();


        }

        /// <summary>列印主機板資訊
        /// 
        /// </summary>
        private static void PrintMotherBoardInfo()
        {
            ManagementClass mc = new ManagementClass("WIN32_BaseBoard");
            ManagementObjectCollection moc = mc.GetInstances();
            foreach (ManagementObject mo in moc)
            {
                foreach (PropertyData pd in mo.Properties)
                {
                    Console.WriteLine(string.Format("{0}{1}{2}", pd.Name, "/t", pd.Value));
                }
            }
        }
        //獲取主機板序號
        private static string GetMotherBoardSerialNumber()
        {
            ManagementClass mc = new ManagementClass("WIN32_BaseBoard");
            ManagementObjectCollection moc = mc.GetInstances();
            string SerialNumber = "";
            foreach (ManagementObject mo in moc)
            {
                SerialNumber = mo["SerialNumber"].ToString();
                break;
            }
            return SerialNumber;
        }

        //獲取CPU序列號程式碼
        private static string GetCPUMessage()
        {
            string cpuInfo = "";//cpu序列號
            ManagementClass cimobject = new ManagementClass("Win32_Processor");
            ManagementObjectCollection moc = cimobject.GetInstances();
            foreach (ManagementObject mo in moc)
            {
                cpuInfo = mo.Properties["ProcessorId"].Value.ToString();
            }
            return cpuInfo;
        }
        //獲取網絡卡硬體地址MAC address
        private static string GetMacMessage()
        {
            ManagementClass mc = new ManagementClass("Win32_NetworkAdapterConfiguration");
            ManagementObjectCollection moc = mc.GetInstances();
            string MsNo = "";
            foreach (ManagementObject mo in moc)
            {
                if ((bool)mo["IPEnabled"] == true)
                    MsNo = mo["MacAddress"].ToString();
                mo.Dispose();
            }
            return MsNo;
        }


        //獲取硬碟ID
        private static void GetHardMessage()
        {
            string HDid = "";
            ManagementClass cimobject = new ManagementClass("Win32_DiskDrive");
            ManagementObjectCollection moc = cimobject.GetInstances();
            foreach (ManagementObject mo in moc)
            {
                HDid = (string)mo.Properties["Model"].Value;
                Console.WriteLine("硬碟ID:" + HDid);
            }


            //return HDid;
        }


    }
}

測試機器:

3臺型號相同的聯想筆記本

測試 結果

1.

主機板序號:1ZH3B1359MY
CPU序列號程式碼:BFEBFBFF00020655
網絡卡硬體地址88:9F:FA:FD:02:89
硬碟ID:WDC WD3200BEVT-08A23T1

2.

主機板序號:1ZH3B13S2LN
CPU序列號程式碼:BFEBFBFF00020655
網絡卡硬體地址88:9F:FA:FD:7D:C2
硬碟ID:WDC WD3200BEVT-08A23T1 ATA Device
硬碟ID:Generic- Multi-Card USB Device

3.