从C#启动应用程序(.EXE)?


Answers:


167

使用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");

229

以下是有用的代码段:

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

您可以使用这些对象做更多的事情,您应该阅读文档:ProcessStartInfoProcess


7
只是想指出,这似乎也适用于.exes以外的其他文件类型。只需指向您要打开的文件,Windows就会尽力打开它:System.Diagnostics.Process.Start(@“ C:\ Users \ Blank \ Desktop \ PdfFile.pdf”);
DLeh 2014年

WindowStyle = ProcessWindowStyle.Hidden适用于非GUI。我第一次运行此程序,但没有UseShellExecute = false失败了,但是现在可以使用了。不知道发生了什么...
Barton

如果我不知道exe的全名怎么办,我想调用“ PathTo * .exe”怎么办?我可以在其余名称中使用“ *”吗?
维沙尔

@vishal,此过程用于调用特定的可执行文件。您当然可以尝试使用,PathTo*.exe但我不希望它起作用。(a)如果有多个匹配项怎么办?(b)我希望微软的代码不允许这样做,因为它的安全性较弱。
sfuqua,



14

如果像我一样在使用System.Diagnostics时遇到问题,请使用以下简单代码在没有该代码的情况下将起作用:

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

10
如何“没有System.Diagonostics”?Process在System.Diagnostics中。
保罗·辛克莱


2

只需将您的file.exe放在\ bin \ Debug文件夹中并使用:

Process.Start("File.exe");

3
您的答案与之前的答案相比有何改进?
mustaccio '16

大多数来此帖子的人都对通常放在调试文件夹中的文件路径感到困惑,因此在使用我的提示“ File.exe”时直接了解这种情况下不需要路径。
阿明·穆罕默德

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库)

By using our site, you acknowledge that you have read and understand our Cookie Policy and Privacy Policy.
Licensed under cc by-sa 3.0 with attribution required.