2012-12-24 14 views
12

to działa:Dlaczego metoda Process.Start ("cmd.exe", proces); nie działa?

Process.Start("control", "/name Microsoft.DevicesAndPrinters"); 

Ale to nie: (To właśnie otwiera wiersz polecenia.)

ProcessStartInfo info = new ProcessStartInfo("cmd.exe"); 
info.Arguments = "control /name Microsoft.DevicesAndPrinters"; 
Process.Start(info); 

Dlaczego?

(Tak, wiem, że nie są one identyczne. Ale drugi "powinny" pracować.)

+0

To działa dobrze dla mnie. Jaki jest twój błąd? –

+2

@ SonerGönül Bez błędu. Jak pisałem - po prostu otwiera wiersz polecenia. Powinno to otworzyć DevicesAndPrinters. (Czy masz na myśli to, że to dla ciebie?) – ispiro

Odpowiedz

29

To dlatego cmd.exe oczekuje przełącznik /K wykonać proces przekazany jako argument. Wypróbuj poniższy kod:

ProcessStartInfo info = new ProcessStartInfo("cmd.exe"); 
info.Arguments = "/K control /name Microsoft.DevicesAndPrinters"; 
Process.Start(info); 

EDYCJA: Zmieniono na /K powyżej. Możesz użyć przełącznika /C, jeśli chcesz, aby cmd.exe zamknął się po uruchomieniu polecenia.

1

Spróbuj ten

ProcessStartInfo info = new ProcessStartInfo("control"); 
info.Arguments = "/name Microsoft.DevicesAndPrinters"; 
Process.Start(info); 
+0

Wiem. Ale konkretnie chcę zobaczyć wiersz polecenia _i_ wynik. – ispiro

6

Potrzebny jest przełącznik /c lub /k (opcje dla cmd.exe), aby wykonać polecenie. Wypróbuj:

ProcessStartInfo info = new ProcessStartInfo("cmd.exe"); 
info.Arguments = "/c control /name Microsoft.DevicesAndPrinters"; 
Process.Start(info); 
Powiązane problemy