C #에서 응용 프로그램 (.EXE)을 시작 하시겠습니까?


답변:


168

System.Diagnostics.Process.Start()방법을 사용하십시오 .

사용 방법에 대한 이 기사 를 확인하십시오 .

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

다음은 유용한 코드 스 니펫입니다.

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;
}

이러한 객체로 할 수있는 작업이 훨씬 많으 므로 ProcessStartInfo , Process 설명서를 읽어야합니다 .


7
이것이 .exes 이외의 다른 파일 형식에서도 작동하는 것 같습니다. 열려는 파일을 가리키면 Windows가 파일을 여는 것이 가장 좋습니다. System.Diagnostics.Process.Start (@ "C : \ Users \ Blank \ Desktop \ PdfFile.pdf");
DLeh

WindowStyle = ProcessWindowStyle.Hidden은 비 GUI 용입니다. 처음으로 이것을 실행했을 때 UseShellExecute = false없이 실패했지만 지금 작동합니다. 무슨 일이 일어나고 있는지 잘 모르겠습니다 ...
Barton

exe의 전체 이름을 모르는 경우 "PathTo * .exe"를 호출하고 싶습니다. 이것이 가능합니까? 나머지 이름에 "*"를 사용할 수 있습니까?
vishal

@vishal,이 프로세스는 특정 실행 파일을 호출하기위한 것입니다. 확실히 사용해 볼 수는 PathTo*.exe있지만 작동하지 않을 것입니다. (ᄀ) 성냥이 여러 개인 경우 어떻게해야합니까? (b) 보안이 약하기 때문에 Microsoft의 코드가 이것을 허용하지 않기를 바랍니다.
sfuqua

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

exe의 전체 이름을 모르는 경우 "PathTo * .exe"를 호출하고 싶습니다. 이것이 가능합니까?
vishal

@vishal 당신은 실행 파일을 찾기 위해 검색 절차를 코딩해야합니다
KADEM Mohammed


14

내가했던 것처럼 System.Diagnostics를 사용하는 데 문제가있는 경우 다음과 같은 간단한 코드를 사용하십시오.

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

10
"System.Diagonostics없이"는 어떻습니까? ProcessSystem.Diagnostics에 있습니다.
Paul Sinclair


2

file.exe를 \ bin \ Debug 폴더에 넣고 다음을 사용하십시오.

Process.Start("File.exe");

3
이전의 모든 답변이 어떻게 향상됩니까?
mustaccio

이 게시물을 보려는 대부분의 사람들은 일반적으로 디버그 폴더에 넣는 파일의 경로에 대해 혼란스러워서 내 힌트 "File.exe"를 사용할 때이 경우 경로가 필요 없다는 것을 직접 이해합니다.
Amin Mohamed

0

Process.Start 사용프로세스를 시작 를 .

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

0

이 시도:

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

(System.Diagnostics 라이브러리를 사용해야합니다)

당사 사이트를 사용함과 동시에 당사의 쿠키 정책개인정보 보호정책을 읽고 이해하였음을 인정하는 것으로 간주합니다.
Licensed under cc by-sa 3.0 with attribution required.