Hi liebe Community,
zunächst erstmal mein Vorhaben:
Ich möchte mit Diskpart.exe einen Datenträger formatieren und mitbekommen, wenn ein Fehler dabei aufgetreten ist.
Momentan mache ich es wie folgt:
EDIT:
Der Vorgang an sich funktioniert.
Wenn ich jetzt aber z.B. während der Formatierung den USB-Stick entferne, habe ich folgendes Problem:
Der ExitCode ist immer 0, egal ob ein Fehler aufgetreten ist, oder nicht.
Bei der Abfrage If p.StandardError.Peek > 0 Then bleibt die Anwendung dort stehen und wartet (wahrscheinlich, weil es keine Daten im stderr gibt).
Ich möchte nicht den stdout prüfen, denn andere Systemsprachen = andere Outputs...
Wie könnteich sonst noch abfragen, ob fehler aufgetreten sind?
Besten Dank für Eure Antworten
zunächst erstmal mein Vorhaben:
Ich möchte mit Diskpart.exe einen Datenträger formatieren und mitbekommen, wenn ein Fehler dabei aufgetreten ist.
Momentan mache ich es wie folgt:
VB.NET-Quellcode
- Try
- Dim p As Process = New Process()
- Dim pInfo As ProcessStartInfo = New ProcessStartInfo()
- pInfo.FileName = "diskpart.exe"
- pInfo.WorkingDirectory = Environment.GetFolderPath(Environment.SpecialFolder.System)
- pInfo.RedirectStandardInput = True
- pInfo.RedirectStandardOutput = True
- pInfo.RedirectStandardError = True
- pInfo.UseShellExecute = False
- pInfo.CreateNoWindow = True
- p.StartInfo = pInfo
- p.Start()
- p.StandardInput.WriteLine("select disk " + PhysicalDrive)
- p.StandardInput.Flush()
- p.StandardInput.WriteLine("clean")
- p.StandardInput.Flush()
- p.StandardInput.WriteLine("create partition primary")
- p.StandardInput.Flush()
- p.StandardInput.WriteLine("select partition 1")
- p.StandardInput.Flush()
- p.StandardInput.WriteLine("active")
- p.StandardInput.Flush()
- p.StandardInput.WriteLine("assign letter= " + DriveLetter)
- p.StandardInput.Flush()
- p.StandardInput.WriteLine("format fs=NTFS Label=USB-Disk quick")
- p.StandardInput.Flush()
- p.StandardInput.WriteLine("exit")
- p.StandardInput.Flush()
- p.WaitForExit()
- Dim exitCode As Integer = p.ExitCode
- If p.StandardError.Peek > 0 Then
- MessageBox.Show("Es ist ein Fehler aufgetreten!")
- End If
- Catch ex as Exception
- End Try
EDIT:
Der Vorgang an sich funktioniert.
Wenn ich jetzt aber z.B. während der Formatierung den USB-Stick entferne, habe ich folgendes Problem:
Der ExitCode ist immer 0, egal ob ein Fehler aufgetreten ist, oder nicht.
Bei der Abfrage If p.StandardError.Peek > 0 Then bleibt die Anwendung dort stehen und wartet (wahrscheinlich, weil es keine Daten im stderr gibt).
Ich möchte nicht den stdout prüfen, denn andere Systemsprachen = andere Outputs...
Wie könnteich sonst noch abfragen, ob fehler aufgetreten sind?
Besten Dank für Eure Antworten
Dieser Beitrag wurde bereits 1 mal editiert, zuletzt von „TRiViUM“ ()