C# 取得 硬碟機 序號 ( 物理 / 邏輯 磁碟)
C# 透過 WMI 取得 硬碟序號 ( 物理 / 邏輯 磁碟)
請先加入參考 System.Management
using System;
using System.Collections.Generic;
using System.ComponentModel;
using System.Data;
using System.Drawing;
using System.Text;
using System.Windows.Forms;
using System.Management;
namespace sln_Win32_LogicalDisk
{
public partial class Form1 : Form
{
public Form1()
{
InitializeComponent();
}
// 列舉所有邏輯磁碟機Volumne 序號
private void button1_Click(object sender, EventArgs e)
{
String strQry = "SELECT * FROM Win32_LogicalDisk"; // 指定查詢Win32_LogicalDisk ( 邏輯磁碟)
// ManagementObjectSearcher 類別, 根據指定的查詢擷取管理物件的集合。
ManagementObjectSearcher searcher = new ManagementObjectSearcher(strQry);
// 使用Foreach 陳述式存取集合類別中物件(元素)
// Get 方法, 叫用指定的WMI 查詢, 並傳回產生的集合。
foreach (ManagementObject QryObj in searcher.Get())
{
// 取得磁碟Volumne 名稱跟序號
listBox1.Items.Add(QryObj["Name"].ToString() + " " + QryObj["VolumeSerialNumber"].ToString());
}
}
// 取得某邏輯磁碟機Volumne 序號
private void button2_Click(object sender, EventArgs e)
{
string strCls = "Win32_LogicalDisk"; // WMI 名稱空間( Namespace )
string strDrive = "C:"; // 指定C: 邏輯磁碟機
// ManagementObject 類別, 表示WMI 執行個體。
ManagementObject objCls = new ManagementObject(strCls + ".DeviceID=" + "\"" + strDrive + "\"");
// 取得磁碟Volumne 序號
MessageBox.Show(objCls.GetPropertyValue("VolumeSerialNumber").ToString());
}
// 取得某 物理磁碟機( 媒體) 序號
private void button3_Click(object sender, EventArgs e)
{
string strCls = "Win32_PhysicalMedia"; // WMI 名稱空間( Namespace )
string strDrive = "0"; // 指定第一顆硬碟
// ManagementObject 類別, 表示WMI 執行個體。
ManagementObject objCls = new ManagementObject(
strCls + ".Tag=\"\\\\\\\\.\\\\PHYSICALDRIVE" + strDrive + "\"");
// 取得物理磁碟機( 硬碟) 序號
MessageBox.Show(objCls.GetPropertyValue("SerialNumber").ToString());
}
}
}