vb@rchiv
VB Classic
VB.NET
ADO.NET
VBA
C#

https://www.vbarchiv.net
Rubrik: Dateisystem · Laufwerke   |   VB-Versionen: VB5, VB608.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 OtterBewertung:  Views:  16.964 
www.tools4vb.deSystem:  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



Anzeige

Kauftipp Unser Dauerbrenner!Diesen und auch alle anderen Tipps & Tricks finden Sie auch auf unserer aktuellen vb@rchiv  Vol.6
(einschl. Beispielprojekt!)

Ein absolutes Muss - Geballtes Wissen aus mehr als 8 Jahren vb@rchiv!
- nahezu alle Tipps & Tricks und Workshops mit Beispielprojekten
- Symbol-Galerie mit mehr als 3.200 Icons im modernen Look
Weitere Infos - 4 Entwickler-Vollversionen (u.a. sevFTP für .NET), Online-Update-Funktion u.v.m.
 
 
Copyright ©2000-2024 vb@rchiv Dieter OtterAlle Rechte vorbehalten.


Microsoft, Windows und Visual Basic sind entweder eingetragene Marken oder Marken der Microsoft Corporation in den USA und/oder anderen Ländern. Weitere auf dieser Homepage aufgeführten Produkt- und Firmennamen können geschützte Marken ihrer jeweiligen Inhaber sein.