Hi!
Ich versuche mir mit einem kleinen "Heimprojekt" etwas VB beizubringen. Ich hänge jetzt an folgendem Problem:
Ich brauche eine Auflistung aller Festplatten, die an einem Rechner angeschlossen sind, und zwar unabhängig davon, ob ihnen Laufwerksbuchstaben zugeordnet sind oder nicht. Letztlich möchte ich gerne anhand der Seriennummer oder noch besser anhand der GUID überprüfen, ob bestimmte Laufwerke angeschlossen bzw. verfügbar sind.
Am Besten wäre sowas:
Laufwerk 0: - Name: C:\ - Serial: 1234567890 - GUID: 12345678-1234-1234-1234-1234567890AB - Partition: Harddisk0, Partition1
Laufwerk 1: - Name: #Keiner# Serial: 1234567890 - GUID: 12345678-1234-1234-1234-1234567890AB - Partition: Harddisk0, Partition1
Laufwerk 2: ...
Leider scheitere ich ich gerade daran
Mit (sorry, der Code ist etwas umständlich gestrickt)
bekomme ich nur die logischen Laufwerke (mit Laufwerksbuchstaben). Alternativ hab' ich es mal so versucht:
Dabei bekomme ich aber nur für "SerialNumber" und "Tag" überhaupt ein Ergebnis. Wenn ich als Suchstring "SELECT * FROM Win32_LogicalDisk where DriveType=3" verwende, dann bekomme ich aber natürlich wieder keine nicht-gemounteten Festplatten.
Stelle ich mich einfach doof an, oder ist das wirklich so kompliziert?
Ich versuche mir mit einem kleinen "Heimprojekt" etwas VB beizubringen. Ich hänge jetzt an folgendem Problem:
Ich brauche eine Auflistung aller Festplatten, die an einem Rechner angeschlossen sind, und zwar unabhängig davon, ob ihnen Laufwerksbuchstaben zugeordnet sind oder nicht. Letztlich möchte ich gerne anhand der Seriennummer oder noch besser anhand der GUID überprüfen, ob bestimmte Laufwerke angeschlossen bzw. verfügbar sind.
Am Besten wäre sowas:
Laufwerk 0: - Name: C:\ - Serial: 1234567890 - GUID: 12345678-1234-1234-1234-1234567890AB - Partition: Harddisk0, Partition1
Laufwerk 1: - Name: #Keiner# Serial: 1234567890 - GUID: 12345678-1234-1234-1234-1234567890AB - Partition: Harddisk0, Partition1
Laufwerk 2: ...
Leider scheitere ich ich gerade daran
Mit (sorry, der Code ist etwas umständlich gestrickt)
VB.NET-Quellcode
- Dim diDrives() As DriveInfo
- diDrives = DriveInfo.GetDrives
- Dim strResult As String = "", i As Integer
- For i = 0 To UBound(diDrives)
- If diDrives(i).IsReady Then strResult = strResult & "VolumeLabel: " & diDrives(i).VolumeLabel & Chr(13) Else strResult = strResult & "Drive " & i & " is not ready" & Chr(13)
- Next
bekomme ich nur die logischen Laufwerke (mit Laufwerksbuchstaben). Alternativ hab' ich es mal so versucht:
VB.NET-Quellcode
- Dim strResult As String
- Dim searchDrives As ManagementObjectSearcher
- searchDrives = New ManagementObjectSearcher("SELECT * FROM Win32_PhysicalMedia")
- 'searchDrives = New ManagementObjectSearcher("SELECT * FROM Win32_LogicalDisk where DriveType=3")
- Dim mocDrives As ManagementObjectCollection
- mocDrives = searchDrives.Get()
- Dim moDrive As ManagementObject
- Dim i As Integer
- For i = 0 To mocDrives.Count - 1
- moDrive = mocDrives(i)
- If moDrive("SerialNumber") IsNot Nothing Then strResult = strResult & "SerialNumber: " & moDrive("SerialNumber").ToString & Chr(13) & Chr(13)
- If moDrive("Tag") IsNot Nothing Then strResult = strResult & "Tag: " & moDrive("Tag").ToString & Chr(13)
- 'If moDrive("VolumeSerialNumber") IsNot Nothing Then strResult = strResult & "VolumeSerialNumber: " & moDrive("VolumeSerialNumber").ToString & Chr(13)
- 'If moDrive("VolumeName") IsNot Nothing Then strResult = strResult & "VolumeName: " & moDrive("VolumeName").ToString & Chr(13)
- Next
Dabei bekomme ich aber nur für "SerialNumber" und "Tag" überhaupt ein Ergebnis. Wenn ich als Suchstring "SELECT * FROM Win32_LogicalDisk where DriveType=3" verwende, dann bekomme ich aber natürlich wieder keine nicht-gemounteten Festplatten.
Stelle ich mich einfach doof an, oder ist das wirklich so kompliziert?