¿Lanzar una aplicación (.EXE) desde C #?


Respuestas:


168

System.Diagnostics.Process.Start()Método de uso

Mira este artículo sobre cómo usarlo.

Process.Start("notepad", "readme.txt");

string winpath = Environment.GetEnvironmentVariable("windir");
string path = System.IO.Path.GetDirectoryName(
              System.Windows.Forms.Application.ExecutablePath);

Process.Start(winpath + @"\Microsoft.NET\Framework\v1.0.3705\Installutil.exe",
path + "\\MyService.exe");

230

Aquí hay un fragmento de código útil:

using System.Diagnostics;

// Prepare the process to run
ProcessStartInfo start = new ProcessStartInfo();
// Enter in the command line arguments, everything you would enter after the executable name itself
start.Arguments = arguments; 
// Enter the executable to run, including the complete path
start.FileName = ExeName;
// Do you want to show a console window?
start.WindowStyle = ProcessWindowStyle.Hidden;
start.CreateNoWindow = true;
int exitCode;


// Run the external process & wait for it to finish
using (Process proc = Process.Start(start))
{
     proc.WaitForExit();

     // Retrieve the app's exit code
     exitCode = proc.ExitCode;
}

Hay mucho más que puede hacer con estos objetos, debe leer la documentación: ProcessStartInfo , Process .


77
Solo quería señalar que esto también parece funcionar con otros tipos de archivos que no sean .exes. Simplemente apunte al archivo que desea abrir y Windows hará todo lo posible para abrirlo: System.Diagnostics.Process.Start (@ "C: \ Users \ Blank \ Desktop \ PdfFile.pdf");
DLeh

WindowStyle = ProcessWindowStyle.Hidden es para no GUI. La primera vez que ejecuté esto falló sin UseShellExecute = false, pero funciona ahora. No estoy seguro de lo que está pasando allí ...
Barton

¿Qué sucede si no sé el nombre completo del exe, quiero llamar a "PathTo * .exe"? ¿Es esto posible? ¿Puedo usar "*" para el resto del nombre?
Vishal

@vishal, este proceso es para llamar a un ejecutable específico. Ciertamente puede intentar usarlo, PathTo*.exepero no esperaría que funcione. (a) ¿Qué pasa si hay múltiples coincidencias? (b) Espero que el código de Microsoft no permita esto, ya que sería una seguridad débil.
sfuqua

58
System.Diagnostics.Process.Start("PathToExe.exe");

¿Qué sucede si no sé el nombre completo del exe, quiero llamar a "PathTo * .exe"? ¿Es esto posible?
Vishal

@vishal necesita codificar un procedimiento de búsqueda para encontrar el ejecutable
KADEM Mohammed

19
System.Diagnostics.Process.Start( @"C:\Windows\System32\Notepad.exe" );

14

Si tiene problemas para usar System.Diagnostics como yo, use el siguiente código simple que funcionará sin él:

Process notePad = new Process();
notePad.StartInfo.FileName   = "notepad.exe";
notePad.StartInfo.Arguments = "mytextfile.txt";
notePad.Start();

10
¿Cómo es esto "sin System.Diagonostics"? Processestá en System.Diagnostics.
Paul Sinclair


2

Simplemente coloque su archivo.exe en la carpeta \ bin \ Debug y use:

Process.Start("File.exe");

3
¿Cómo mejora tu respuesta en todas las anteriores?
mustaccio

La mayoría de las personas que vinieron a ver esta publicación se confundieron acerca de la ruta de un archivo que generalmente ponen en la carpeta de depuración, por lo que cuando usan mi sugerencia "File.exe" entienden directamente que no necesitan una ruta en este caso.
Amin Mohamed

0

Use Process.Start para comenzar un proceso.

using System.Diagnostics;
class Program
{
    static void Main()
    {
    //
    // your code
    //
    Process.Start("C:\\process.exe");
    }
} 

0

Prueba esto:

Process.Start("Location Of File.exe");

(Asegúrese de usar la biblioteca System.Diagnostics)

Al usar nuestro sitio, usted reconoce que ha leído y comprende nuestra Política de Cookies y Política de Privacidad.
Licensed under cc by-sa 3.0 with attribution required.