即時精選

使用 C# 取得電腦硬體資訊:完整範例教學

更新於 發佈於 閱讀時間約 7 分鐘

在開發系統診斷、硬體監控或資產管理工具時,取得電腦的硬體資訊是非常常見的需求。本文將教你如何使用 C# 結合 WMI(Windows Management Instrumentation)取得各種 PC 硬體資訊,從 CPU、記憶體到顯示卡、主機板通通都有。



🔧 前置準備

在 C# 中,查詢硬體資訊可以透過 System.Management 命名空間。請確認你的專案有引用此命名空間:

csharp
複製編輯using System.Management;

💡 如果是使用 .NET Core 或 .NET 5/6/7,請透過 NuGet 安裝套件:

mathematica
複製編輯
Install-Package System.Management

🧩 常見硬體資訊查詢對應 WMI 類別

硬體WMI 類別處理器 (CPU)Win32_Processor記憶體 (RAM)Win32_PhysicalMemory顯示卡 (GPU)Win32_VideoController硬碟Win32_DiskDrive主機板Win32_BaseBoardBIOSWin32_BIOS作業系統Win32_OperatingSystem網路卡Win32_NetworkAdapter、Win32_NetworkAdapterConfigurationUSB 裝置Win32_USBController鍵盤 / 滑鼠Win32_Keyboard、Win32_PointingDevice


🧪 範例:完整查詢所有硬體資訊

以下是可查詢上述所有 WMI 類別的範例程式碼,並將每個屬性列印到 Console。

csharp
複製編輯using System;
using System.Management;

class Program
{
static void Main()
{
string[] hardwareClasses = new string[]
{
"Win32_Processor",
"Win32_PhysicalMemory",
"Win32_Keyboard",
"Win32_PointingDevice",
"Win32_VideoController",
"Win32_SoundDevice",
"Win32_DiskDrive",
"Win32_CDROMDrive",
"Win32_BaseBoard",
"Win32_BIOS",
"Win32_NetworkAdapter",
"Win32_NetworkAdapterConfiguration",
"Win32_OperatingSystem",
"Win32_ComputerSystem",
"Win32_SystemEnclosure",
"Win32_PnPEntity",
"Win32_USBController",
"Win32_Battery"
};

foreach (string wmiClass in hardwareClasses)
{
Console.WriteLine($"========== {wmiClass} ==========");
try
{
ManagementObjectSearcher searcher = new ManagementObjectSearcher($"SELECT * FROM {wmiClass}");
foreach (ManagementObject obj in searcher.Get())
{
foreach (PropertyData prop in obj.Properties)
{
Console.WriteLine($"{prop.Name}: {prop.Value}");
}
Console.WriteLine(); // 分隔每筆資料
}
}
catch (Exception ex)
{
Console.WriteLine($"無法查詢 {wmiClass}: {ex.Message}");
}

Console.WriteLine();
}

Console.WriteLine("✅ 所有硬體資訊查詢完成!");
}
}

📝 補充說明

  • 有些資訊可能會重複或格式較難閱讀:你可以針對每個類別做自訂格式處理,例如把容量單位轉換成 GB、日期轉換格式等。
  • 某些類別可能沒有資料或查詢失敗,建議包在 try/catch 裡避免程式崩潰。
  • 若要輸出成檔案,可以改用 StreamWriter 將資料寫入 .txt.json.csv 等格式。

🎯 結語

使用 C# 結合 WMI 是一種簡單又強大的方式來取得電腦硬體資訊。你可以根據這份程式碼進一步延伸,例如建立 GUI 工具、匯出報告,甚至與伺服器連線回報設備狀態。

留言
avatar-img
留言分享你的想法!
linct-avatar-img
2025/05/08
感謝分享, 有空請參考如下 https://vocus.cc/article/65c783e5fd897800012aa52b
avatar-img
程式輕鬆玩
71會員
150內容數
這裡將以輕鬆風格,深入探討程式設計的基礎和高級概念。從程式語言到演算法,我們將以易懂的方式解釋每個主題,讓你輕鬆掌握。無論你是初學者或有經驗者,都能在這裡找到適合你的內容。無論你的目標是成為專業開發者還是擴展知識,我們都會陪伴你一同成長!
程式輕鬆玩的其他內容
2024/02/04
在開發 Windows 應用程式時,有時會需要讓使用者能夠進行圖片的複製與貼上操作。這篇教學將會介紹如何在 C# 中實現這樣的功能。我們將使用 System.Drawing 命名空間中的一些類別來處理圖片的複製和貼上操作。
Thumbnail
2024/02/04
在開發 Windows 應用程式時,有時會需要讓使用者能夠進行圖片的複製與貼上操作。這篇教學將會介紹如何在 C# 中實現這樣的功能。我們將使用 System.Drawing 命名空間中的一些類別來處理圖片的複製和貼上操作。
Thumbnail
2024/02/04
在本教學中,我們將介紹如何使用C#語言以及HtmlAgilityPack套件來爬取台灣證券交易所網站上特定股票的股價資料。
Thumbnail
2024/02/04
在本教學中,我們將介紹如何使用C#語言以及HtmlAgilityPack套件來爬取台灣證券交易所網站上特定股票的股價資料。
Thumbnail
2024/02/04
在程式設計中,我們經常會遇到需要重複執行某段程式碼的情況,例如列印星期幾、處理資料、或者檢查使用者輸入。為了有效地處理這類任務,我們可以使用迴圈。在 C# 中,最常見的迴圈包括 for 迴圈和 while 迴圈。本文將介紹這兩種迴圈的基本語法和應用場景。
Thumbnail
2024/02/04
在程式設計中,我們經常會遇到需要重複執行某段程式碼的情況,例如列印星期幾、處理資料、或者檢查使用者輸入。為了有效地處理這類任務,我們可以使用迴圈。在 C# 中,最常見的迴圈包括 for 迴圈和 while 迴圈。本文將介紹這兩種迴圈的基本語法和應用場景。
Thumbnail
看更多
你可能也想看
Thumbnail
「欸!這是在哪裡買的?求連結 🥺」 誰叫你太有品味,一發就讓大家跟著剁手手? 讓你回購再回購的生活好物,是時候該介紹出場了吧! 「開箱你的美好生活」現正召喚各路好物的開箱使者 🤩
Thumbnail
「欸!這是在哪裡買的?求連結 🥺」 誰叫你太有品味,一發就讓大家跟著剁手手? 讓你回購再回購的生活好物,是時候該介紹出場了吧! 「開箱你的美好生活」現正召喚各路好物的開箱使者 🤩
Thumbnail
對於程式卡頓的問題,如何分析程式碼占用多少記憶體,如何釋放或改寫,可以先用python內建的tracemalloc模組來追蹤 Python 分配的記憶體區塊。 本文將介紹最簡單的用法,來分析一段程式碼占用了多少記憶體。 結果呈現 印出當前使用的記憶體,與峰值記憶體使用量。 程式範例 i
Thumbnail
對於程式卡頓的問題,如何分析程式碼占用多少記憶體,如何釋放或改寫,可以先用python內建的tracemalloc模組來追蹤 Python 分配的記憶體區塊。 本文將介紹最簡單的用法,來分析一段程式碼占用了多少記憶體。 結果呈現 印出當前使用的記憶體,與峰值記憶體使用量。 程式範例 i
Thumbnail
在網路速度有限的情況下,依序記錄不斷產生的資訊,能統計使用者在頁面上操作了哪些功能。
Thumbnail
在網路速度有限的情況下,依序記錄不斷產生的資訊,能統計使用者在頁面上操作了哪些功能。
Thumbnail
本文探討了電腦架構的運行方式,使用比喻解釋CPU、記憶體與硬碟的關係,並指出在提升電腦速度時,加記憶體並非總是有效的方法。讀者將瞭解到,解決電腦速度問題需要分析具體的瓶頸,而不是單純依賴擴充記憶體。讓讀者對電腦性能的提升有更深入的理解。
Thumbnail
本文探討了電腦架構的運行方式,使用比喻解釋CPU、記憶體與硬碟的關係,並指出在提升電腦速度時,加記憶體並非總是有效的方法。讀者將瞭解到,解決電腦速度問題需要分析具體的瓶頸,而不是單純依賴擴充記憶體。讓讀者對電腦性能的提升有更深入的理解。
Thumbnail
電腦有很多零件,有CPU、主機板(MB)、記憶體(Memory)... 今天我想分享,我這次組電腦的過程,還有一些好用的技巧,希望能幫助到大家,組出心中的完美電腦!
Thumbnail
電腦有很多零件,有CPU、主機板(MB)、記憶體(Memory)... 今天我想分享,我這次組電腦的過程,還有一些好用的技巧,希望能幫助到大家,組出心中的完美電腦!
Thumbnail
C#程式由一或多個檔案組成,包含命名空間、類別、結構、介面、列舉和委派等型別。Main方法是C#應用程式的進入點。在C#中,註解用於在程式碼中添加說明,有單行和多行兩種類型。變數的定義需要指定變數的類型和名稱,可以一次為多個變數賦值。
Thumbnail
C#程式由一或多個檔案組成,包含命名空間、類別、結構、介面、列舉和委派等型別。Main方法是C#應用程式的進入點。在C#中,註解用於在程式碼中添加說明,有單行和多行兩種類型。變數的定義需要指定變數的類型和名稱,可以一次為多個變數賦值。
Thumbnail
C#是一種開源、跨平台、面向對象的編程語言,具有類型安全、泛型、模式匹配等特性。廣泛應用於桌面和Web應用程序、遊戲開發、移動應用、雲計算等領域。全球數十萬家公司像微軟、Unity Technologies、Stack Overflow等使用C#支持其業務。C#還提供豐富的進階學習資源和主題。
Thumbnail
C#是一種開源、跨平台、面向對象的編程語言,具有類型安全、泛型、模式匹配等特性。廣泛應用於桌面和Web應用程序、遊戲開發、移動應用、雲計算等領域。全球數十萬家公司像微軟、Unity Technologies、Stack Overflow等使用C#支持其業務。C#還提供豐富的進階學習資源和主題。
Thumbnail
完成了Debug.log()的測試,接著還是要跟各位簡單講一下C#的一些規則,之後看程式會(比較)看得懂。 又講到變數? 在Unity中,變數是重要的工具,用來儲存和管理資料。讓開發者能夠靈活調整遊戲的行為和性能,減少代碼的重複性,使得遊戲開發更加高效和簡潔。透過使用變數,開發者可以輕鬆修改資料
Thumbnail
完成了Debug.log()的測試,接著還是要跟各位簡單講一下C#的一些規則,之後看程式會(比較)看得懂。 又講到變數? 在Unity中,變數是重要的工具,用來儲存和管理資料。讓開發者能夠靈活調整遊戲的行為和性能,減少代碼的重複性,使得遊戲開發更加高效和簡潔。透過使用變數,開發者可以輕鬆修改資料
追蹤感興趣的內容從 Google News 追蹤更多 vocus 的最新精選內容追蹤 Google News