Wie ermittle ich in VB.NET 2003 die vollständigen Namen der Laufwerke wie "Lokaler Datenträger (C:)", "DVD-RW-Laufwerk (F:)", "USB2 (G:)"?

Antwort

In VB.NET 2003 kannst du die vollständigen Namen der Laufwerke (wie „Lokaler Datenträger (C:)“, „DVD-RW-Laufwerk (F:)“, „USB2 (G:)“ usw.) mit Hilfe des `System.IO.DriveInfo`-Objekts **nicht** direkt ermitteln, da dieses erst ab .NET Framework 2.0 verfügbar ist. In .NET 1.1 (wie in VB.NET 2003 üblich) musst du auf die Windows-API zurückgreifen, um den „vollständigen Namen“ (also die Bezeichnung aus dem Explorer) zu bekommen. Hier ein Beispiel, wie du das mit der Windows-API-Funktion `GetVolumeInformation` und `GetLogicalDriveStrings` machen kannst: ```vbnet Imports System.Runtime.InteropServices Imports System.Text Module Module1 <DllImport("kernel32.dll", CharSet:=CharSet.Auto)> _ Private Function GetVolumeInformation( _ ByVal lpRootPathName As String, _ ByVal lpVolumeNameBuffer As StringBuilder, _ ByVal nVolumeNameSize As Integer, _ ByRef lpVolumeSerialNumber As Integer, _ ByRef lpMaximumComponentLength As Integer, _ ByRef lpFileSystemFlags As Integer, _ ByVal lpFileSystemNameBuffer As StringBuilder, _ ByVal nFileSystemNameSize As Integer) As Boolean End Function <DllImport("kernel32.dll", CharSet:=CharSet.Auto)> _ Private Function GetLogicalDriveStrings( _ ByVal nBufferLength As Integer, _ ByVal lpBuffer As StringBuilder) As Integer End Function Sub Main() Dim buffer As New StringBuilder(256) Dim drives As New StringBuilder(256) GetLogicalDriveStrings(drives.Capacity, drives) Dim allDrives() As String = drives.ToString().Split(Chr(0)) For Each drive As String In allDrives If drive.Length > 0 Then Dim volName As New StringBuilder(256) Dim fsName As New StringBuilder(256) Dim serialNum, maxCompLen, fsFlags As Integer If GetVolumeInformation(drive, volName, volName.Capacity, serialNum, maxCompLen, fsFlags, fsName, fsName.Capacity) Then Dim label As String = volName.ToString() If label = "" Then label = "Lokaler Datenträger" Console.WriteLine(label & " (" & drive.TrimEnd("\"c) & ")") End If End If Next End Sub End Module ``` **Hinweise:** - Das Laufwerkslabel (z.B. „USB2“) wird mit `GetVolumeInformation` ausgelesen. - Wenn kein Label vergeben ist, wird „Lokaler Datenträger“ angezeigt. - Die genaue Bezeichnung wie „DVD-RW-Laufwerk“ bekommst du so nicht, da das Windows-Explorer-spezifisch ist. Du kannst aber anhand des Laufwerkstyps (z.B. mit `GetDriveType`) unterscheiden, ob es sich um ein CD/DVD-Laufwerk handelt. **Weitere Infos:** - [Microsoft Doku zu GetVolumeInformation](https://learn.microsoft.com/en-us/windows/win32/api/fileapi/nf-fileapi-getvolumeinformationa) - [Microsoft Doku zu GetLogicalDriveStrings](https://learn.microsoft.com/en-us/windows/win32/api/fileapi/nf-fileapi-getlogicaldrivestringsa) Für eine noch genauere Anzeige wie im Explorer müsstest du auf WMI oder Shell-APIs zurückgreifen, was in VB.NET 2003 aber recht aufwändig ist.

KI fragen

Verwandte Fragen

Was ist das Gegenteil von Path.Combine(...) in VB.NET 2003?

In VB.NET 2003 ist das Gegenteil von `Path.Combine(...)` das Zerlegen eines zusammengesetzten Dateipfads in seine Einzelteile (Verzeichnisse und Dateiname). Während `Path.Combine` mehrere Teile z... [mehr]

Gibt es ‚Path.GetFileName‘ in VB.NET 2003?

Richtig, in VB.NET 2003 (also .NET Framework 1.1) gibt es die Methode `Path.GetFileName` bereits, aber möglicherweise hast du einen Fehler im Code oder im Import der Namespaces. So funktioniert... [mehr]

Gibt es fertigen Code für einen selbstgebauten FileDialog in VB.NET 2003 und wie lautet dieser?

Für VB.NET 2003 gibt es keinen offiziellen, fertigen Code für einen komplett selbstgebauten FileDialog, da normalerweise der Standarddialog (`OpenFileDialog`, `SaveFileDialog`) verwendet wir... [mehr]

Gibt es einen Weg, die Dateiansicht (View) aus einer VB.NET 2003-App heraus zu ändern?

Ja, es ist möglich, die Dateiansicht (View) eines Datei-Dialogs (z. B. OpenFileDialog oder SaveFileDialog) in einer VB.NET 2003-Anwendung zu ändern – allerdings nur mit Einschränk... [mehr]

Kann man in der IDE von VB.NET 2023 nachträglich den Namen der zu kompilierenden EXE-Datei ändern?

Ja, in der IDE von VB.NET (Visual Studio) kannst du den Namen der zu kompilierenden EXE-Datei nachträglich ändern. Das geht folgendermaßen: 1. **Projektmappen-Explorer öffnen:**... [mehr]

Warum werden ä, ö, ü und ß beim Speichern einer RichTextBox in VB.NET 2003 als type.plaintext nicht korrekt gespeichert?

Das Problem, dass deine `RichTextBox` in VB.NET 2003 beim Speichern als `type.plaintext` die Zeichen **ä, ö, ü** und **ß** „verschluckt“, liegt sehr wahrscheinlich an... [mehr]

Warum funktioniert in VB.NET 2003 'SelectAll' in TextBoxes nicht wie erwartet?

In VB.NET 2003 kann es vorkommen, dass die Methode `SelectAll()` bei TextBox-Steuerelementen nicht wie erwartet funktioniert, insbesondere im Zusammenhang mit bestimmten Ereignissen wieEnter`, `GotFoc... [mehr]

Wie speichere ich mit VB.NET 2003 alle GIFs eines Ordners inklusive Unterordner als PNG?

Um in VB.NET 2003 alle GIF-Dateien eines Ordners (inklusive Unterordner) als PNG zu speichern, kannst du die folgenden Schritte umsetzen: 1. **Verwende die `Directory.GetFiles`-Methode** mit dem Para... [mehr]

Gibt es in VB.NET 2003 Unterschiede beim Speichern von GIFs und PNGs mit Transparenz?

Ja, in VB.NET 2003 gibt es einen Unterschied beim Speichern von GIFs und PNGs mit Transparenz, insbesondere im Hinblick auf die Art und Weise, wie Transparenz unterstützt und gespeichert wird. *... [mehr]

Wie schreibt man in VB.NET 2003 100% Transparenz als ARGB?

In VB.NET 2003 kannst du einen vollständig transparenten Farbwert mit ARGB wie folgt angeben: ```vb.net Dim transparenteFarbe As Color = Color.FromArgb(0, 0, 0, 0) ``` Die Parameter von `Color.... [mehr]