2012-06-12 24 views
5

que puede ejecutar esta bien desde la línea de comandos:No se puede ejecutar comandos desde Process.Start

C:\Windows\System32\rundll32.exe "C:\Program Files (x86)\Windows Photo Viewer\PhotoViewer.dll", ImageView_Fullscreen C:\Users\Public\Pictures\Sample Pictures\Chrysanthemum.jpg 

imagen se abre ningún problema.

Sin embargo, cuando intento hacer esto:

exe = "C:\\Windows\\System32\\rundll32.exe \"C:\\Program Files (x86)\\Windows Photo Viewer\\PhotoViewer.dll\", ImageView_Fullscreen C:\\Users\\Public\\Pictures\\Sample Pictures\\Chrysanthemum.jpg"; 
Process.Start(exe); 

consigo un System.ComponentModel.Win32Exception

: El sistema no puede encontrar el archivo especificado

tengo intenté con comillas tanto en la línea de comando como en C#, y tampoco trabajé con ellos. De acuerdo con una respuesta que leí en SO recientemente, la última parte no debe ser citada.

¿Qué está pasando?

+0

Puede que sea necesario para envolver el último parámetro con comillas, así, ya que parte de la ruta contiene un espacio. –

+0

Gracias por su respuesta. Leí una publicación aquí en algún lado que dice que la última parte no debe estar entre comillas, y la versión de línea de comando tampoco funciona con comillas alrededor del último elemento. – sennett

+1

Pruébelo de todos modos ;-) También puede ejecutar Process Monitor para ver qué archivo especificado no se puede encontrar, que podría dar una pista. –

Respuesta

13

Resulta que uno tiene que pasar el comando y los argumentos por separado:

exe = "C:\\Windows\\System32\\rundll32.exe"; 
arguments = "\"C:\\Program Files (x86)\\Windows Photo Viewer\\PhotoViewer.dll\", ImageView_Fullscreen C:\\Users\\Public\\Pictures\\Sample Pictures\\Chrysanthemum.jpg"; 
Process.Start(exe, arguments); 
+0

¿se supone que debe funcionar si el directorio de archivos tiene forma de URL? – user1166085

+0

@ user1166085 No lo creo. http://msdn.microsoft.com/en-us/library/h6ak8zt5(v=vs.110).aspx, sección Comentarios: 'Si la dirección del archivo ejecutable para iniciar es una URL, el proceso no se inicia y null es devuelto. ' – sennett

Cuestiones relacionadas