Erhalten Sie H / D-Seriennummer (Nicht Volumn Seriennummer) für IDE und SATA
-
22-08-2019 - |
Frage
Wie kann ich die Festplatte Seriennummer für IDE und SATA-Laufwerke in VB.NET lesen? (Ich habe nicht die Datenträger-Seriennummer will).
Diese Informationen sollten sowohl für XP und Vista, wenn möglich ohne Administratorrechte gesammelt werden.
Lösung
Sie können mit WMI (Windows Management Instrumentation) wie folgt :
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
Obwohl, ich habe über Fälle gelesen, in denen keine Seriennummer zurückgegeben wird, mithilfe von WMI. Ein anderer Weg, um dies zu erreichen durch Platform Invocation Services (PInvoke) sein würde.
Diese Artikel enthält einen Download, in dem der Autor Geräte Createfile () und DeviceIoControl () Laufwerk Informationen über Interop-Dienste in VB .NET zu extrahieren.
Um eine der oben beschriebenen Methoden verwenden Sie ADMIN Rechte benötigen, ein Dienstprogramm, das dies zu umgehen, scheint kann hier . Wenn Ihr Gefühl der C ++ / Win32 Quellcode ist abenteuerlich für Sie zu lesen. (Überprüfen Sie die Funktion 'ReadPhysicalDriveInNTWithZeroRights ()' out)
Andere Tipps
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
Hier ist der Code auf der Festplatte Seriennummer zu bekommen
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
Hoffe, es hilft.