Moin moin
Ich habe hier ein Problem um die
Die Volumen Nummer bekomme ich heraus, stimmt auch nach etlichen Tests.
Bei der Datenträger Nummer bekomme ich immer nur " -1 " heraus.
Spoiler anzeigen
Ich habe hier ein Problem um die
Datenträger Nr ( disknr )
zu ermitteln.Die Volumen Nummer bekomme ich heraus, stimmt auch nach etlichen Tests.
Bei der Datenträger Nummer bekomme ich immer nur " -1 " heraus.
VB.NET-Quellcode
-
- ' Ermitteln der Disk - Volumen Nummer basierend auf dem Laufwerksbuchstaben
- Dim volumenNumber As Integer = GetVolumenNumber(driveLetter.Chars(0))
- Dim diskNumber As Integer = GetDiskNumber(driveLetter.Chars(0))
- ' --------------------------------------------------------------
- ' Methode um die Volumen Nummer zu ermitteln
- Public Function GetVolumenNumber(driveLetter As Char) As Integer
- Dim volumenNumber As Integer = -1 ' Standardwert, wenn keine Disk-Nummer gefunden wurde
- Dim startInfo As New ProcessStartInfo()
- startInfo.FileName = "diskpart"
- startInfo.RedirectStandardInput = True
- startInfo.RedirectStandardOutput = True
- startInfo.UseShellExecute = False
- startInfo.CreateNoWindow = True
- Dim process As Process = Process.Start(startInfo)
- If process IsNot Nothing Then
- Dim sw As StreamWriter = process.StandardInput
- Dim sr As StreamReader = process.StandardOutput
- sw.WriteLine("list volume")
- sw.WriteLine("exit")
- sw.Close()
- Dim output As String = sr.ReadToEnd()
- Debug.WriteLine("Debugausgabe output: " & output)
- Dim regexPattern As String = "Volume\s+(\d+)\s+" & driveLetter & "\s+"
- 'Debug.WriteLine("PatterN: " & regexPattern)
- Dim regex As New Regex(regexPattern, RegexOptions.IgnoreCase)
- Dim match As System.Text.RegularExpressions.Match = regex.Match(output)
- If match.Success Then
- volumenNumber = Integer.Parse(match.Groups(1).Value)
- End If
- process.WaitForExit()
- process.Close()
- End If
- Debug.WriteLine("DriveLetter: " & driveLetter & " VolumenNr: " & volumenNumber)
- Return volumenNumber
- End Function
- ' Methode um die Datentraeger Nummer zu ermitteln
- Public Function GetDiskNumber(driveLetter As Char) As Integer
- Dim diskNumber As Integer = -1 ' Standardwert, wenn keine Datenträger-Nummer gefunden wurde
- Dim startInfo As New ProcessStartInfo()
- startInfo.FileName = "diskpart"
- startInfo.RedirectStandardInput = True
- startInfo.RedirectStandardOutput = True
- startInfo.UseShellExecute = False
- startInfo.CreateNoWindow = True
- Dim process As Process = Process.Start(startInfo)
- If process IsNot Nothing Then
- Dim sw As StreamWriter = process.StandardInput
- Dim sr As StreamReader = process.StandardOutput
- sw.WriteLine("list disk")
- sw.WriteLine("exit")
- sw.Close()
- Dim output As String = sr.ReadToEnd()
- output = output.Replace("„", "ä").Replace("„", "ö").Replace("á", "ü") ' Umlaute ersetzen
- Debug.WriteLine("Debugausgabe output: " & output) ' Ausgabe der gesamten Ausgabe von diskpart
- Dim regexPattern As String = "Datentrager\s+(\d+)\s+" & driveLetter & "\s+"
- ' Regulärer Ausdruck für die Datenträgernummer
- Dim regex As New Regex(regexPattern, RegexOptions.IgnoreCase)
- Dim match As System.Text.RegularExpressions.Match = regex.Match(output)
- If match.Success Then
- diskNumber = Integer.Parse(match.Groups(1).Value)
- Else
- Debug.WriteLine("Keine Übereinstimmung für Laufwerksbuchstabe " & driveLetter & " gefunden.")
- End If
- process.WaitForExit()
- process.Close()
- End If
- Debug.WriteLine("DriveLetter: " & driveLetter & " DiskNr: " & diskNumber)
- Return diskNumber
- End Function
Asperger Autistin. Brauche immer etwas um gewisse Sachen zu verstehen.