Process.Start mehrere Argumente und Parameter

  • VB.NET
  • .NET (FX) 4.5–4.8

Es gibt 7 Antworten in diesem Thema. Der letzte Beitrag () ist von RodFromGermany.

    Process.Start mehrere Argumente und Parameter

    Hallo Zusammen

    ich möchte ein Tool machen mit dem ich wbadmin (backups) erstellen kan.

    wenn ich eine Batchdatei anlege mit Inhalt:
    wbadmin /? > D:\Test.txt

    und ich sie doppelklicke wird diese korrekt ausgeführt. führe ich cmd aus und trag den Befehl "wbadmin /? > D:\Test.txt" ein wird alles korrekt ausgeführt.

    Nun möchte ich diesen Befehl aber unter VB.net netzen indem ich Process.Start("wbadmin /? > D:\Test.txt") eintrage.

    Dies Funktioniert leider nicht. Ich nehme an dass ich noch welche "" Anführungszeichen und & Zeichen setzen muss finde dies jedoch nicht heraus wie...?

    ich bedanke mich schon mal im Voraus

    shadow01 schrieb:

    Process.Start("wbadmin /? > D:\Test.txt")
    Die Prozedur Start() hat Überladungen, z.B. diese:

    VB.NET-Quellcode

    1. Process.Start("wbadmin", "/? > D:\Test.txt")
    Falls Du diesen Code kopierst, achte auf die C&P-Bremse.
    Jede einzelne Zeile Deines Programms, die Du nicht explizit getestet hast, ist falsch :!:
    Ein guter .NET-Snippetkonverter (der ist verfügbar).
    Programmierfragen über PN / Konversation werden ignoriert!
    Hallo Danke für die Antwort

    wenn ich dies aber so mache erhalte ich die Fehlermeldung:
    System.ComponentModel.Win32Exception: "Das System kann die angegebene Datei nicht finden"
    gibt man den Befehl jedoch im CMD: wbadmin /? > D:\Test.txt ein funktioniert alles. Verstehe nicht warum es so

    VB.NET-Quellcode

    1. ​Process.Start("wbadmin", "/? > D:\Test.txt")
    nicht funktioniert

    Gruss
    Ich habe nun einen weiteren Test gemacht. Ich lasse per vb.net ein Batch-Datei erstellen und führe diese dann aus.

    VB.NET-Quellcode

    1. Private Sub Button2_Click(sender As Object, e As EventArgs) Handles Button2.Click
    2. If System.IO.File.Exists(Application.StartupPath & "\start.bat") Then
    3. Kill(Application.StartupPath & "\start.bat")
    4. End If
    5. Dim file As System.IO.StreamWriter
    6. file = My.Computer.FileSystem.OpenTextFileWriter(Application.StartupPath & "\start.bat", True)
    7. file.WriteLine("CD C:\WINDOWS\System32\")
    8. file.WriteLine("wbadmin /? > C:\Users\12345\Test.log")
    9. file.Close()
    10. Process.Start(Application.StartupPath & "\start.bat")
    11. End Sub


    Die Batch-Datei wird richtig erstellt und wenn ich sie per Doppelklick ausführe funktioniert auch alles korrekt. Führe ich die Datei mittels Process.Start() aus so erscheint das CMD kurz und verschwindet dann wieder. Die Log-Datei wird angelegt bleibt aber leer.
    Worin liegt der unterschied zwischen Doppelklick und Process.Start?

    Danke und Gruss

    shadow01 schrieb:

    Verstehe nicht warum es so
    ​Process.Start("wbadmin", "/? > D:\Test.txt")
    nicht funktioniert


    Dann musst du entweder im ProcessStartInfo das WorkingDirectory setzen oder im Process.Start den kompletten Pfad von wbadmin angeben.

    --
    If Not Program.isWorking Then Code.Debug Else Code.DoNotTouch
    --

    Dieser Beitrag wurde bereits 2 mal editiert, zuletzt von „petaod“ ()

    shadow01 schrieb:

    VB.NET-Quellcode

    1. file.WriteLine("CD C:\WINDOWS\System32\")
    Mit dem Post von @petaod steht doch alles da, was Du brauchst:
    Process.Start("C:\WINDOWS\System32\wbadmin.exe", "/? > D:\Test.txt")
    Falls Du diesen Code kopierst, achte auf die C&P-Bremse.
    Jede einzelne Zeile Deines Programms, die Du nicht explizit getestet hast, ist falsch :!:
    Ein guter .NET-Snippetkonverter (der ist verfügbar).
    Programmierfragen über PN / Konversation werden ignoriert!
    Das Problem ist wenn ich Process.Start("C:\WINDOWS\System32\wbadmin.exe", "/? > D:\Test.txt") ausführe, dass dann die Meldung:
    System.ComponentModel.Win32Exception: "Das System kann die angegebene Datei nicht finden"
    angezeigt wird obwohl unter dem Pfad die Datei C:\WINDOWS\System32\wbadmin.exe liegt. kann das mit den Rechten zutun haben?
    @shadow01 Ich kann Deinen Effekt reproduzieren.
    An den Admin-Rechten liegt es nicht allein.
    Ohne Admin-Rechte geht nix.
    Es sieht eher danach aus, dass das System einen solchen Aufruf wie auch immer verhindert.
    Der Aufruf in einer CMD-Datei funktioniert, wenn ich die CMD-Datei im Explorer als Administrator starte.
    Starte ich die CMD als Administrator aus dem VB-Programm, kommt die Fehlermeldung.
    Falls Du diesen Code kopierst, achte auf die C&P-Bremse.
    Jede einzelne Zeile Deines Programms, die Du nicht explizit getestet hast, ist falsch :!:
    Ein guter .NET-Snippetkonverter (der ist verfügbar).
    Programmierfragen über PN / Konversation werden ignoriert!