使用 WMI (System.Management) 查詢硬體資訊
1. 取得 MAC 位址
private string GetMac()
{
string mac = "本機 MAC 位址:";
using (var mc = new ManagementClass("Win32_NetworkAdapterConfiguration"))
{
foreach (ManagementObject mo in mc.GetInstances())
{
if ((bool)mo["IPEnabled"])
{
string[] parts = mo["MacAddress"].ToString().Split(':');
foreach (var p in parts) mac += p;
}
}
}
return mac + "\r\n";
}
2. 取得 CPU 序號 (ProcessorId)
private string GetCPUID()
{
string cpu = "本機 CPU 序號:";
using (var mc = new ManagementClass("Win32_Processor"))
{
foreach (ManagementObject mo in mc.GetInstances())
cpu += mo["ProcessorId"].ToString().Trim();
}
return cpu + "\r\n";
}
3. 取得硬碟型號 (Model) — 注意非序號
private string GetHardID()
{
string hdd = "本機硬碟型號:";
using (var mc = new ManagementClass("Win32_DiskDrive"))
{
foreach (ManagementObject mo in mc.GetInstances())
hdd += mo["Model"].ToString().Trim();
}
return hdd + "\r\n";
}
補充說明
- 需參考
System.Management.dll。
Win32_NetworkAdapterConfiguration 只取 IPEnabled=true 的實體網卡。
Win32_DiskDrive 的 Model 為型號,若需真正序號請查 SerialNumber 屬性 (可能需管理員權限)。
- 虛擬機/雲端環境下部分資訊可能為空或通用值。