C# 取得 硬碟機 序號 ( 物理 / 邏輯 磁碟)

  • 77495
  • 0

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());

}

}

}