2016-09-16 60 views
1

我有一个程序,运行另一个外部程序通过使用Process.Start() - 完整路径的方法(如“C:\ some \ folders \ here \ externprogram.exe “)。C#运行另一个程序没有复制.exe文件

我遇到的问题是,只要我点击运行它的按钮,我的程序就会将它复制到文件夹中,即我的程序在 - 并在那里运行它(如“D:\ MyProgram \ externprogram.exe” )。不幸的是,这个extern程序依赖于旁边的其他东西,我不想将其他东西复制到我的程序文件夹中。

有没有什么办法可以运行程序而不是复制它?

+0

那么,不要复制文件呢?在当前所在的位置执行它?为什么这不是一个选项? –

+0

不是一个好主意 - 这可能会搞乱程序文件夹 - 它可以通过将WorkingDirectory设置为@Berkay和@ChristophKN来解释。 – Marduka

回答

1

尝试设置WorkingDirectory;

using (Process pp = new Process()) 
     { 
      pp.StartInfo.FileName = "externalAppUrl"; 
      pp.StartInfo.WorkingDirectory = "directoryNameToRun"; 
      pp.Start(); 
     } 

有关更多信息,请here

希望帮助。

+0

谢谢,这是有效的。 – Marduka

+0

欢迎您。 @Marduka – Berkay

+0

'Process'实现'IDisposable',这就是为什么使用(Process pp = new Process())将其封装到'using'中是合理的原因:' –

0

有没有什么办法可以运行程序而不是复制它?

Process类有一个名为ProcessStartInfo构造函数的参数。 该ProcessStartInfo有一个属性称为WorkingDirectory。此属性设置一个值,即Process应该在此目录中启动。 它不会将任何文件复制到您的目录。

使用

ProcessStartInfo startInfo = new ProcessStartInfo(PathToYourExe) 
{ 
    WorkingDirectory = "The directory from the exe." 
} 

开始你的过程是现在很容易。

using(Process process = Process.Start(startInfo)) 
{ 
    // Your code while process will run. 
} 
相关问题