Domanda

Come posso leggere il numero di serie del disco rigido per l'IDE e SATA in VB.NET? (Non voglio che il numero di serie del volume).

Queste informazioni dovrebbero essere raccolte sia per XP e Vista, se possibile, senza diritti amministrativi.

È stato utile?

Soluzione

È possibile utilizzare WMI (Windows Management Instrumentation) come questo :

Dim mos As New ManagementObjectSearcher("SELECT * FROM Win32_PhysicalMedia")

For Each mo As ManagementObject In mos.Get()
    Dim serial As String = mo("SerialNumber").ToString()
Next

Anche se, ho letto di casi in cui nessun numero di serie viene restituito tramite WMI. Un altro modo per ottenere questo risultato sarebbe attraverso Platform Invocation Services (PInvoke).

Questo articolo include un download in cui gli attrezzi autore CreateFile () e DeviceIoControl () per estrarre le informazioni unità attraverso servizi di interoperabilità in VB .NET.

Per utilizzare uno dei metodi sopra descritti sarà necessario diritti di amministratore, un programma di utilità che sembra aggirare questo può essere trovato qui . Se la vostra sensibilità avventurosa del C ++ / Win32 codice sorgente è disponibile per essere esaminate. (Check out 'ReadPhysicalDriveInNTWithZeroRights ()' la funzione)

Altri suggerimenti

Public Function getHardDiskSerialNo()
    Dim serial As String

    Dim hd As New ManagementObjectSearcher("SELECT * FROM Win32_PhysicalMedia")
    For Each dvs As ManagementObject In hd.Get()
        serial = dvs("SerialNumber").ToString()

    Next
    Return serial

End Function

Ecco il codice per ottenere HDD Serial Number

    Dim HDD_Serial As String

    Dim hdd As New ManagementObjectSearcher("select * from Win32_DiskDrive")

    For Each hd In hdd.Get

        HDD_Serial = hd("SerialNumber")
        MsgBox(HDD_Serial)
    Next

Speranza che aiuta.

Autorizzato sotto: CC-BY-SA insieme a attribuzione
Non affiliato a StackOverflow
scroll top