Process.Start没有启动游戏应用程序?

时间:2016-07-28 13:34:40

标签: c# process.start

我对C#很陌生,我以前搞砸过它,但我现在真的很想知道它。 我想为游戏制作一个外部控制台应用程序,游戏是一个糟糕的端口,它需要在后台打开很多程序才能使它更具可玩性。所以我决定制作一个程序,用一个在游戏开始时启动所有程序的程序取代launcher.exe,并在游戏结束时关闭它们。

游戏确实是BioShock 2,但我很可能会制作这个程序,所以我可以将它用于其他可以利用这个程序的游戏。 这是我的问题,但是当我开始调试时,它会打开其中一个程序来帮助游戏(FlawlessWidescreen),但游戏本身不会打开。 我试过运行BioShock2,但它显示它运行了一小段时间然后关闭,没有错误,所以我无法弄清楚我做错了什么。

这是我的代码。

using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using System.Threading.Tasks;
using System.Diagnostics;
using System.Security;

namespace Bioshock2_Advanced_Launcher
{
        public class SecurityException : SystemException
    {
        static void Main(string[] args)
        {
            Process.Start("F:\\Steam Library\\steamapps\\common\\BioShock 2\\SP\\Builds\\Binaries\\FlawlessWidescreen.lnk");
            Process.Start("F:\\Steam Library\\steamapps\\common\\BioShock 2\\SP\\Builds\\Binaries\\Bioshock2.exe");
        }
    }
}

FlawlessWidescreen是一种快捷方式,我不得不提升权限,因此我不必一直以管理员身份运行该应用程序。

我也想知道你们中是否有人知道如何检查BioShock2是否会关闭,以便其他程序关闭。有什么想法吗?

由于

编辑:我还想补充说我试过的其他游戏完全没问题。

1 个答案:

答案 0 :(得分:0)

使用WorkingDirectory修复它。

ProcessStartInfo bioshock2Info = new ProcessStartInfo();
bioshock2Info.FileName = (@"F:\Steam Library\steamapps\common\BioShock 2\SP\Builds\Binaries\Bioshock2.exe");
bioshock2Info.WorkingDirectory = Path.GetDirectoryName(@"F:\Steam Library\steamapps\common\BioShock 2\SP\Builds\Binaries\Bioshock2.exe");
Process bioshock2 = Process.Start(bioshock2Info);