2

我为游戏 PSOBB 制作了一个小型加载器,但对于离线版本,我懒得进入一个名为“servers”的文件夹并启动所有 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();
    }
}

它检查进程是否正在运行,如果没有,则启动它。问题是当我按下按钮时,它会启动但它没有完全加载,所以它会关闭,但如果我手动启动该过程,它工作正常。我尝试以管理员身份运行加载程序,但什么也没有……我什至尝试指定完整路径,但问题仍然存在。

4

2 回答 2

0

你的路错了。。

在启动在该位置找到的任何进程时,您必须完全限定该路径。见msdn

在您的电脑中:Process.Start("C:\\myprocess.exe");

在其他电脑上:Process.Start("OtherPcNetAddress\\SharedFolder\\myprocess.exe");

于 2013-03-30T07:53:23.313 回答
0

我不认为你的路径是正确的。您要么需要指定这样的绝对路径:

Process.Start(@"C:/servers/login_server.exe");

或者像这样的相对路径:

Process.Start(Path.Combine(Environment.CurrentDirectory, @"servers/login_server.exe"));
于 2013-03-30T08:07:15.867 回答