Probleme mit dem Ausführen von Command - Befehlen



  • Hallo,

    ich möchte einige Befehle wie "xcopy", "del" oder "regedit.exe" von meinem Programm aus ausführen. Grundsätzlich ist das auch kein Problem.
    Ich mache das folgendermaßen:

    ProcessStartInfo startInfo = new ProcessStartInfo("cmd", "/c " + temp);
    startInfo.RedirectStandardOutput = false;
    startInfo.UseShellExecute = false;
    // nicht als Fenster öffnen
    startInfo.CreateNoWindow = true;
    
    Process proc = new System.Diagnostics.Process();
    proc.StartInfo = startInfo;
    proc.Start();
    

    Mache ich es so, werden alle Befehle ausgeführt, allerdings bekomme ich folgende Exceptionmeldung:
    "StandardOut wurde nicht umgeleitet oder der Prozess wurde noch nicht gestartet."
    Änder ich dann das Attribut RedirectStandardOutput in true, erhalte ich die Meldung nicht mehr, aber der Befehl "xcopy" wird nicht mehr ausgeführt.

    Ich könnte jetzt eine Fallunterscheidung machen, so dass die Meldung nur noch bei "xcopy" auftaucht, allerdings halte ich das für keine gute Lösung. Ich habe jetzt auch schon länger danach gesucht, aber noch nichts brauchbares gefunden. Vielleicht kann mir hier jemand sagen, was ich ändern muss oder wonach ich mal suchen kann?

    Schon mal vielen Dank für eure Hilfe.



  • Fehlt da vielleicht die Process.Start-Methode? Oder hab' ich sie nur übersehen ...



  • Du hast sie übersehen - es wird die nicht statische Start() Methode verwendet.



  • Du willst kein Fenster, aber redirectest auch nicht. D.h. er weiß nicht wohin er die Outputs schreiben soll.
    Darum heißt der Fehler ja auch: "[url]StandardOut wurde nicht umgeleitet[/url] oder der Prozess wurde noch nicht gestartet."
    ShellExecute ist ja auch ausgeschalten.

    Schalte einfach das RedirectStandardOutput auf true und fertig. Wenn dich der Output nicht interessiert musst du ihn auch nicht lesen.


Anmelden zum Antworten