2012-12-24 21 views
12

Questo funziona:Perché Process.Start ("cmd.exe", processo); non funziona?

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

Ma questo non lo fa: (E 'appena si apre un prompt dei comandi.)

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

Perché?

(Sì, lo so che non sono identici. Ma la seconda "dovrebbe" lavoro.)

+0

Funziona bene per me. Qual è il tuo errore? –

+2

@ SonerGönül Nessun errore. Come ho scritto, apre semplicemente un prompt dei comandi. Dovrebbe aprire DevicesAndPrinters. (Vuoi dire che lo fa per te?) – ispiro

risposta

29

Questo perché cmd.exe aspetta un interruttore /K per eseguire un processo passato come argomento. Prova il codice qui sotto

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

EDIT: Cambiato /K sopra. È possibile utilizzare lo switch /C se si desidera che cmd.exe si chiuda dopo aver eseguito il comando.

1

Provate questo

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

Lo so. Ma in particolare voglio vedere la riga di comando _e il risultato. – ispiro

6

È necessario un /c o uno switch /k (opzioni per cmd.exe) in modo che il comando venga eseguito. Prova:

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