Rubrik: Dateisystem · Laufwerke | VB-Versionen: VB5, VB6 | 08.08.03 |
Alle logischen Laufwerke per WMI ermitteln Mit Hilfe des WMI-Objektes ein Leichtes: das Ermitteln aller logischen Laufwerke auf dem System. | ||
Autor: Dieter Otter | Bewertung: | Views: 16.979 |
www.tools4vb.de | System: Win9x, WinNT, Win2k, WinXP, Win7, Win8, Win10, Win11 | Beispielprojekt auf CD |
Möchten Sie wissen, welche logischen Laufwerke auf dem System existieren?
Dann können Sie entweder das Windows-API heranziehen (siehe Alle logischen Laufwerke ermitteln) oder das WMI-Objekt verwenden:
Option Explicit ' Laufwerks-Typen Public Enum eDriveType DRIVE_REMOVABLE = 2 DRIVE_FIXED = 3 DRIVE_REMOTE = 4 DRIVE_CDROM = 5 DRIVE_RAMDISK = 6 End Enum
' ermittelt alle logischen Laufwerke ' (eines bestimmten Typs) ' und gibt diese in einem String-Array zurück Public Function GetAllDrives( _ Optional ByVal nDriveType As eDriveType = 0) As Variant Dim oWMI As Object Dim oDrives As Object Dim oDrive As Object Dim sSQL As String Dim i As Integer sSQL = "SELECT * FROM Win32_LogicalDisk" If nDriveType <> 0 Then sSQL = sSQL & " WHERE DriveType = " & CStr(nDriveType) End If Set oWMI = GetObject("winmgmts:") Set oDrives = oWMI.ExecQuery(sSQL) If oDrives.Count > 0 Then ReDim sDrives(oDrives.Count - 1) i = 0 For Each oDrive In oDrives sDrives(i) = oDrive.DeviceID i = i + 1 Next End If Set oDrives = Nothing Set oWMI = Nothing GetAllDrives = sDrives End Function
' Laufwerkstyp bestimmen Public Function GetDriveType(ByVal sDrive As String) As eDriveType Dim oWMI As Object Dim oDrives As Object Dim sSQL As String Dim oDrive As Object sSQL = "SELECT * FROM Win32_LogicalDisk WHERE DeviceID = '" & sDrive & "'" Set oWMI = GetObject("winmgmts:") Set oDrives = oWMI.ExecQuery(sSQL) If Not oDrives Is Nothing Then If oDrives.Count > 0 Then For Each oDrive In oDrives GetDriveType = oDrive.DriveType Exit For Next End If End If Set oDrives = Nothing Set oWMI = Nothing End Function
Beispiel:
Es sollen alle logischen Laufwerke ermittelt und in einer ListBox angezeigt werden. Per Doppelklick auf einen ListBox-Eintrag soll dann der Laufwerkstyp angezeigt werden.
Erstellen Sie ein neues Projekt und kopieren obigen Code in ein Modul. Ziehen Sie auf die Form1 ein ListBox-Control und fügen nachfolgenden Code in das Form-Codefenster ein:
Option Explicit Private Sub Form_Load() ' alle logischen Laufwerke ermitteln Dim vDrives As Variant Dim i As Integer vDrives = GetAllDrives() If IsArray(vDrives) Then For i = 0 To UBound(vDrives) List1.AddItem vDrives(i) Next i End If End Sub
Private Sub List1_DblClick() ' Laufwerkstyp ermitteln If List1.ListIndex >= 0 Then MsgBox GetDriveType(List1.Text) End If End Sub