Come ottenere il numero di serie della chiave USB in C #

Come posso ottenere il numero di serie interno di una penna USB o USB-HardDrive in C #?

Prova questo:

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

Fonte: http://social.msdn.microsoft.com/forums/en-US/Vsexpressvcs/thread/f4447ed3-7e5f-4635-a28a-afff0b620156/

Una soluzione che utilizza Win32 è descritta qui

Modifica: il collegamento originale sembra essere scomparso. Quanto sopra è una copia cache, e l’autore ha anche scritto alcuni esempi di codice in VB.Net che è ancora online qui .

Ho avuto problemi con la soluzione offerta da Yuval Adam come ogni chiavetta USB che ho provato a restituire vuota su Windows 7.

Ho risolto questo semplicemente guardando la proprietà PNPDeviceId sull’object corrente.

Per esempio

 currentObject["PNPDeviceID"].ToString(); 

Non sono sicuro di quanto sia valido, ma ha funzionato per me sulle 3 chiavette USB che ho provato