2010-04-25 35 views
7

que necesito para pasar argumento más de una línea de comandos a través de C# para un proceso llamado Handle.exe: http://www.google.com.mt/search?sourceid=chrome&ie=UTF-8&q=handle.exe¿Cómo puedo pasar más de un argumento de línea de comandos a través de C#

En primer lugar, es necesario ejecutar el archivo ejecutable a través de ADMINISTRADOR permisos. Este post ha ayudado a lograr precisamente eso: programatically run cmd.exe as adminstrator in vista, c#

Pero luego viene el siguiente problema de llamar a los argumentos de la línea reales tales como "-P explorar"

¿Cómo puedo especificar los argumentos de línea de comandos juntos, o tal vez consecutivamente?

código actual es la siguiente:

 Process p = new Process(); 
     ProcessStartInfo processStartInfo = new ProcessStartInfo("filePath"); 
     processStartInfo.CreateNoWindow = true; 
     processStartInfo.UseShellExecute = false; 
     processStartInfo.RedirectStandardOutput = true; 
     processStartInfo.RedirectStandardInput = true; 
     processStartInfo.Verb = "runas"; 
     processStartInfo.Arguments = "/env /user:" + "Administrator" + " cmd"; 

     p.StartInfo = processStartInfo; 
     p.Start(); 
     string output = p.StandardOutput.ReadToEnd(); 
     p.WaitForExit(); 
     Console.WriteLine(output);  

Gracias

+0

La función principal no suele incluir una colección de texto cuando ejecuta la aplicación. Si es así, ¿no puedes analizar eso? – percent20

+0

el problema es que los estoy agregando, en lugar de recuperarlos – sfarrugia

+0

¿Qué problema hay con el código que tiene? –

Respuesta

0

Si está intentando ejecutar un proceso con permisos elevados, puede haber una manera mejor que llamar runas.

1

Creo que la respuesta que está buscando es la de Runas command documentation.

runas /user:[email protected] "notepad my_file.txt" 

Parece ser que el último argumento de la runa comando es el comando que está siendo ejecutado junto con los argumentos. La clave es usar comillas para agrupar el ejecutable de comando real con sus argumentos para que los valores no se vean como argumentos separados para el comando runas, sino que se emitan como un único comando por sí mismo.

Por lo tanto, en su ejemplo, es posible que desee hacer lo siguiente.

processStartInfo.Arguments = "/env /user:" + "Administrator" + " \"cmd -p explore\""; 
+0

Intenté este, también intenté agregar parámetros de cmd como/k (continuar la ejecución), pero todavía nada funciona. – sfarrugia

Cuestiones relacionadas