我在c#中创建了一个小程序,其中一个按钮可以打开另一个.exe文件。
如果我使用它,它可以正常工作:
private void start_Click(object sender, RoutedEventArgs e)
{
System.Diagnostics.Process.Start(@"path to file");
}
但是如果我想让它从同一个文件夹运行.exe,我基本上想要这样的东西:
private void start_Click(object sender, RoutedEventArgs e)
{
System.Diagnostics.Process.Start(@"program.exe");
}
我缺少什么,我尝试过本网站的解决方案:
var startIngo = new ProcessStartInfo();
startIngo.WorkingDirectory = // working directory
// set additional properties
Process proc = Process.Start(startIngo);
但Visual c#根本不识别“ProcessStartInfo”......
答案 0 :(得分:11)
你在寻找的是:
Application.StartupPath
它将返回启动可执行文件的启动路径。
如果您使用的是WPF,请尝试以下方法:
String appStartPath = System.IO.Path.GetDirectoryName(Process.GetCurrentProcess().MainModule.FileName);
答案 1 :(得分:2)
你可以这样做:
var startupPath = System.IO.Path.GetDirectoryName(
System.Reflection.Assembly.GetEntryAssembly().Location);
var programPath = System.IO.Path.Combine(startupPath, "program.exe");
System.Diagnostics.Process.Start(programPath);
答案 2 :(得分:0)
ProcessStartInfo
位于System.Diagnostics
命名空间中 - 您需要使用using System.Diagnostics;
语句在cs文件的顶部导入该命名空间,以便编译器识别ProcessStartInfo
明确指定使用该类的名称空间。
答案 3 :(得分:0)
您也可以尝试System.IO.Path.GetDirectoryName(System.Reflection.Assembly.GetExecutingAssembly().GetName().CodeBase);
获取本地路径。例如
//in your imports/using section
using System.IO
using System.Reflection
using System.Diagnostics;
//in your code to execute
Process.start(Path.GetDirectoryName(Aseembly.GetExecutingAssembly().GetName().CodeBase) + "\\program.exe")
答案 4 :(得分:0)
有两种情况:
直接启动应用程序 - 可以从命令行中提取启动路径。
申请是间接启动的 - 例如从单元测试中,无法从命令行中提取启动路径,但是您可以在启动期间(在用户有机会更改它之前)将其从当前目录读取到静态变量中(例如,使用文件打开/保存对话框))。