天天看點

.net 使用ManagementObjectSearcher 擷取cpu、mac、硬碟sn

需要按照對應的nuget包: System.Management

擷取cpu資訊

ManagementClass mc = new ManagementClass("Win32_Processor");
ManagementObjectCollection moc = mc.GetInstances();

string strCpuID = null;
foreach (ManagementObject mo in moc)
{
    strCpuID = mo.Properties["ProcessorId"].Value.ToString();
    break;
}

return strCpuID;      

擷取mac資訊

ManagementObjectSearcher query = new ManagementObjectSearcher("SELECT * FROM Win32_NetworkAdapterConfiguration");
ManagementObjectCollection queryCollection = query.Get();
string mac = string.Empty;
foreach (ManagementObject mo in queryCollection)
{
    if (mo["IPEnabled"].ToString() == "True")
        mac = mo["MacAddress"].ToString();
}
return mac;      

擷取硬碟sn有兩種方法

第一種 - 使用此方法擷取到的待選資料較少是以速度稍快一些,但整體性能與第二種并無量級上的差別

string sn = string.Empty;
var searcher = new ManagementObjectSearcher("SELECT * FROM Win32_PhysicalMedia");
foreach (ManagementObject wmi_HD in searcher.Get())
{
    foreach (var item in wmi_HD.Properties)
    {
        if (wmi_HD.Properties["SerialNumber"] != null)
        {
            sn = wmi_HD.Properties["SerialNumber"].Value.ToString();
            break;
        }
    }
}
Console.WriteLine(sn);      

第二種

string sn = string.Empty;
ManagementObjectSearcher searcher = new ManagementObjectSearcher("SELECT * FROM Win32_DiskDrive");
foreach (ManagementObject wmi_HD in searcher.Get())
{
    if (wmi_HD.Properties["SerialNumber"] != null)
    {
        sn = wmi_HD.Properties["SerialNumber"].Value.ToString();
        break;
    }
}
Console.WriteLine(sn);      

可用的搜尋項如下

Win32_Processor        //CPU中央處理器
Win32_PhysicalMemory        //實體記憶體條
Win32_Keyboard        //鍵盤
Win32_PointingDevice        //點輸入裝置,包括滑鼠。
Win32_FloppyDrive        //軟碟驅動器
Win32_DiskDrive        //硬碟驅動器
Win32_CDROMDrive        //CD光牒驅動器
Win32_BaseBoard        //主機闆
Win32_BIOS        //BIOS晶片
Win32_ParallelPort        //并口
Win32_SerialPort        //序列槽
Win32_SerialPortConfiguration        //序列槽配置
Win32_SoundDevice        //多媒體裝置,一般指聲霸卡
Win32_SystemSlot        //主機闆插槽 (ISA & PCI & AGP)
Win32_USBController        //USB控制器
Win32_NetworkAdapter        //網絡擴充卡
Win32_NetworkAdapterConfiguration        //網絡擴充卡設定
Win32_Printer        //列印機
Win32_PrinterConfiguration        //列印機設定
Win32_PrintJob        //列印機任務
Win32_TCPIPPrinterPort        //列印機端口
Win32_POTSModem        //MODEM
Win32_POTSModemToSerialPort        //MODEM端口
Win32_DesktopMonitor        //顯示器
Win32_DisplayConfiguration        //顯示卡
Win32_DisplayControllerConfiguration        //顯示卡設定
Win32_VideoController        //顯示卡視訊控制器
Win32_VideoSettings        //顯示卡支援的顯示模式
Win32_TimeZone        //時區
Win32_SystemDriver        //驅動程式
Win32_DiskPartition        //磁盤分區
Win32_LogicalDisk        //邏輯磁盤
Win32_LogicalDiskToPartition        //邏輯磁盤所在分區及始末位置
Win32_LogicalMemoryConfiguration        //邏輯記憶體配置
Win32_PageFile        //系統頁檔案資訊
Win32_PageFileSetting        //頁檔案設定
Win32_BootConfiguration        //系統啟動配置
Win32_ComputerSystem        //計算機資訊簡要
Win32_OperatingSystem        //作業系統資訊
Win32_StartupCommand        //系統自動啟動程式
Win32_Service        //系統安裝的服務
Win32_Group        //系統管理組
Win32_GroupUser        //系統組帳号
Win32_UserAccount        //使用者帳号
Win32_Process        //系統程序
Win32_Thread        //系統線程
Win32_Share        //共享
Win32_NetworkClient        //已安裝的網絡用戶端
Win32_NetworkProtocol        //已安裝的網絡協定
Win32_PnPEntity        //all device 【所有裝置】