VB.NET的Process.Start()立即停止

VB.NET的Process.Start()立即停止

问题描述:

我在用下面的代码一个奇怪的问题,我正在写一个游戏启动在VB.NET:VB.NET的Process.Start()立即停止

Dim gameProcess As Process = New Process() 
gameProcess.StartInfo.UseShellExecute = False 
gameProcess.StartInfo.FileName = TextBox2.Text 
gameProcess.Start() 
Debug.Print("Game started") 
gameProcess.WaitForExit() 
Debug.Print("Game stopped") 

此代码工作正常使用大多数程序,但也有一些人(比如帝国时代),我得到如下:

比赛开始

游戏停止

我看到游戏在任务管理器中瞬间运行,但它立即关闭! 有谁知道为什么?当我从Windows运行游戏时,它工作正常。

我也试过与壳牌,同样的问题。

我试过使用cmd.exe和/ C参数,同样的问题(注意,当我在Windows运行对话框中输入cmd.exe/C path_to_game_exe时,游戏也可以正常启动),只有当我从它提供问题的VB.NET应用程序启动它。

我最后的想法是编写一个临时批处理文件并启动该文件,但这似乎是一个难看的解决方案。

+0

什么是Windows事件日志说? – AutomatedTester 2009-07-27 12:34:09

+0

事件日志说没有afaik,也检查过之前。 – Macuyiko 2009-07-27 12:44:52

您可以尝试的另一个选项是:在startinfo中设置工作目录属性。您可以通过查看开始菜单中游戏快捷键的属性来查找此信息。

http://msdn.microsoft.com/en-us/library/system.diagnostics.processstartinfo.workingdirectory.aspx

很多游戏都使用启动器应用程序,在单独的进程中启动游戏,然后关闭。

+0

虽然没有这种情况,但是这个游戏没有启动器exe,当我手动启动游戏时,进程名称与我开始的进程名称保持一致(所以它不会启动单独的进程)。 – Macuyiko 2009-07-27 12:39:27

它可能是复制保护功能,用于检测系统上的调试器并退出过程。

尝试在发布模式下编译游戏,并在Visual Studio未运行时运行应用程序。

+0

应该提到我尝试在发布模式下编译(我认为调试器可能会做一些奇怪的事情)。没有骰子:(。 – Macuyiko 2009-07-27 12:41:14