Process.Start()不会正确启动进程

时间:2013-03-30 07:32:35

标签: c# process subdirectory process.start

我正在为游戏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();
    }
}

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

2 个答案:

答案 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"));