web-dev-qa-db-ja.com

USBのシリアル番号を取得する方法-C#でスティック

C#でUSB-StickまたはUSB-HardDriveの内部シリアル番号を取得するにはどうすればよいですか?

17
Xn0vv3r

これを試して:

// add a reference to the System.Management Assembly and
// import the System.Management namespace at the top in your "using" statement.
// Then in a method, or on a button click:

ManagementObjectSearcher theSearcher = new ManagementObjectSearcher("SELECT * FROM Win32_DiskDrive WHERE InterfaceType='USB'");
foreach (ManagementObject currentObject in theSearcher.Get())
{
   ManagementObject theSerialNumberObjectQuery = new ManagementObject("Win32_PhysicalMedia.Tag='" + currentObject["DeviceID"] + "'");
   MessageBox.Show(theSerialNumberObjectQuery["SerialNumber"].ToString());
}

出典: http://social.msdn.Microsoft.com/forums/en-US/Vsexpressvcs/thread/f4447ed3-7e5f-4635-a28a-afff0b620156/

30
Yuval Adam

私が試したすべてのUSBスティックがWindows7で空白に戻ったため、YuvalAdamが提供するソリューションに問題がありました。

現在のオブジェクトのプロパティPNPDeviceIdを確認するだけで、これを解決しました。

例えば。

currentObject["PNPDeviceID"].ToString();

これがどれほど有効かはわかりませんが、試した3つのUSBスティックで機能しました

6
James