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

Wie erhalte ich in VB.NET 2003 alle Laufwerksnamen?

Um in VB.NET 2003 alle Laufwerksnamen (z.B. "C:\", "D:\") zu erhalten, kannst du die Klasse `System.IO.DriveInfo` **nicht** verwenden, da sie erst ab .NET Framework 2.0 verfüg... [mehr]

Wie klappe ich in VB.NET 2003 per Code ein bestimmtes Untermenü eines ContextMenus auf?

In VB.NET 2003 (also .NET Framework 1.1) gibt es keine direkte Möglichkeit, ein Untermenü (Submenu) eines ContextMenus per Code aufzuklappen. Das liegt daran, dass das klassische `ContextMen... [mehr]

Wie kann ich in VB.NET 2003 markierten Text in einer RTF-Box per Maus verschieben?

Um in VB.NET 2003 markierten Text innerhalb einer RichTextBox per Drag & Drop mit der Maus zu verschieben, musst du einige Ereignisse und Einstellungen nutzen, da die Standard-RichTextBox dieses V... [mehr]

Wie heißt in VB.NET 2003 der KeyCode für das Hochkomma (')?

In VB.NET 2003 entspricht das Hochkomma (Apostroph, also `'`) dem KeyCode **emQuotes**. Du kannst also in einem KeyDown- oder KeyPress-Ereignis so darauf prüfen: ```vb.net If e.KeyCode =... [mehr]

Kann man in VB.NET 2003 Zeilenumbrüche, die durch RightMargin in einer RTF-Box erzeugt wurden, in echte Zeilenumbrüche umwandeln?

In VB.NET 2003 (und generell in Windows Forms) ist es so, dass der `RightMargin`-Wert einer RichTextBox lediglich die Anzeige beeinflusst: Der Text wird optisch umgebrochen, aber im zugrundeliegenden... [mehr]

Reicht in VB.NET 2003 die TextBox-Einstellung 'AcceptReturn = False', um den Beep bei Return zu unterdrücken?

Nein, in VB.NET 2003 reicht die Einstellung `AcceptsReturn = False` bei einer TextBox nicht aus, um den Beep-Ton beim Drücken der Return-Taste (Enter) zu unterdrücken. **Erklärung:** -... [mehr]

Warum ist 'GetFirstCharIndexFromLine()' in VB.NET 2003 kein Member von RichTextBox?

Das Verhalten, das du beschreibst, ist korrekt: In **VB.NET 2003** (also .NET Framework 1.1) gibt es die Methode `GetFirstCharIndexFromLine()` für das `RichTextBox`-Steuerelement **noch nicht**.... [mehr]

Wie setze ich mit VB.NET 2003 per Button-Klick an den Anfang aller ausgewählten Zeilen einer RichTextBox ein einfaches Anführungszeichen (')?

Um in VB.NET 2003 am Anfang jeder ausgewählten Zeile in einer `RichTextBox` ein einfaches Hochkomma (`'`) einzufügen, kannst du folgenden Ansatz verwenden: 1. **Ermittle die Auswahl**:... [mehr]

Wie wandle ich in VB.NET 2003 beim Laden einer Datei mit RichTextBox.LoadFile einen UTF-8-Text in ANSI um?

In VB.NET 2003 unterstützt die Methode `RichTextBox.LoadFile` standardmäßig keine direkte Konvertierung von UTF-8 nach ANSI. Sie lädt die Datei entweder als RTF oder als reinen Te... [mehr]

Wie kopiere ich in VB.NET 2003 eine Datei in einen anderen Ordner?

In VB.NET 2003 kannst du zum Kopieren einer Datei die Methode `File.Copy` aus dem Namespace `System.IO` verwenden. Hier ein einfaches Beispiel: ```vb Imports System.IO ' Beispiel: Datei kopiere... [mehr]