19

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

4

3 に答える 3

33

これを試して:

// 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/

于 2009-01-16T10:32:11.213 に答える
9

Win32 を使用したソリューションについては、こちらで説明しています

編集:元のリンクがなくなったようです。上記はキャッシュされたコピーであり、著者は VB.Net でいくつかのサンプル コードも書いています。これはまだここでオンラインです

于 2009-01-16T10:59:35.463 に答える
7

Windows 7で試したすべてのUSBスティックが空白になるため、Yuval Adamが提供するソリューションに問題がありました。

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

例えば

currentObject["PNPDeviceID"].ToString();

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

于 2011-05-28T20:06:26.563 に答える