首頁
編程語言
C語言|JAVA編程
Python編程
網頁編程
ASP編程|PHP編程
JSP編程
數據庫
MYSQL數據庫|SqlServer數據庫
Oracle數據庫|DB2數據庫
您现在的位置: 程式碼之家 >> 編程語言 >  >> C語言 >> 關於C語言

C# 獲取系統硬體資訊:CPU ID、硬碟序號與環境屬性完整實作 (下)

     編輯:關於C語言

承接上篇結構定義,本文提供 SystemInfo 調用類別的完整實作,整合 WMI 查詢與 Win32 API 呼叫,涵蓋核心硬體識別碼獲取與系統環境資訊讀取。

核心功能模組

硬體唯一識別碼獲取

  • GetCpuId():透過 Win32_Processor WMI 類別查詢 ProcessorId 屬性
  • GetMainHardDiskId():查詢 Win32_PhysicalMedia 獲取 SerialNumber,自動去除空白

系統目錄與環境資訊

  • GetWinDirectory() / GetSysDirectory():P/Invoke kernel32.dll 的 GetWindowsDirectory/GetSystemDirectory
  • GetOperationSystemInName():解析 Environment.OSVersion 對應 Windows 版本名稱 (含 95/98/ME/NT/2000/XP/Server 2003/Longhorn)

即時系統狀態 (Win32 API)

透過結構體互操作調用 kernel32.dll:

  • GetCpuInfo():GetSystemInfo → CpuInfo 結構 (處理器數量、類型、等級、OEM ID 等)
  • GetMemoryInfo():GlobalMemoryStatus → MemoryInfo 結構 (物理/虛擬/分頁檔案 總量與可用量)
  • GetSystemTimeInfo():GetSystemTime → SystemTimeInfo 結構 (年/月/日/時/分/秒/毫秒)

程式碼結構亮點

  • XML 文件註釋完整,便於 IntelliSense 與文件生成
  • 結構體標記 [StructLayout(LayoutKind.Sequential)] 確保記憶體佈局與非受控代碼一致
  • WMI 查詢採用 foreach 立即 break,避免多核/多盤重複賦值
  • 所有 P/Invoke 簽名嚴格對應 Win32 定義,含 StringBuilder 緩衝區管理

此類別可直接整合至授權驗證、資產管理、診斷日誌等需要硬體指紋與系統環境的場景。

  1. 上一篇文章:
  2. 下一篇文章:
Copyright © 程式碼之家 All Rights Reserved