我正在为游戏PSOBB制作一个小型装载机但是对于离线版本,我懒得进入一个名为“服务器”的文件夹并启动所有3个服务器可执行文件,这就是我正在制作这个程序。所以我的问题是我创建了一个按钮,从另一个文件夹(子目录)启动.exe。
private void startLoginServerButton_Click(object sender, EventArgs e)
{
Process[] killLoginServer = Process.GetProcessesByName("login_server");
if (killLoginServer.Length == 0)
{
Process.Start("servers\\login_server.exe");
System.Threading.Thread.Sleep(1000);
refresh(); // This goes to another method and checks if the program is running
}
else if (killLoginServer.Length > 0)
{
foreach (Process stop in killLoginServer)
{
stop.Kill();
}
System.Threading.Thread.Sleep(1000);
refresh();
}
}
它会检查进程是否正在运行,以及它是否启动它。问题是,当我按下按钮时,它开始但它没有完全加载,所以它关闭,但如果我手动启动过程,它工作正常。我尝试以管理员身份运行我的加载程序但没有...我甚至尝试指定完整路径但问题仍然存在。
答案 0 :(得分:0)
你的道路错了..
启动在该位置找到的任何进程时,您必须完全限定该路径。见msdn
在您的电脑中:Process.Start("C:\\myprocess.exe");
在其他电脑中:Process.Start("OtherPcNetAddress\\SharedFolder\\myprocess.exe");
答案 1 :(得分:0)
我不认为你的道路是正确的。您需要指定如下的绝对路径:
Process.Start(@"C:/servers/login_server.exe");
或者像这样的相对路径:
Process.Start(Path.Combine(Environment.CurrentDirectory, @"servers/login_server.exe"));