Я пишу небольшую программу, которая будет использоваться в качестве платформы цифрового распространения для конкретного игрового движка.
Этот игровой движок имеет довольно старые версии, и это, похоже, вызывает проблемы с совместимостью.
Запуск определенной игры, кажется, работает нормально, если я запускаю ее непосредственно из проводника (т. Е. Нажимаю на exe), но если я запускаю ее как процесс изнутри моей программы, она сразу вылетает.
Так в чем же разница между процессом в .NET и просто запуском его из оболочки?
Вот мой текущий код:
(Для записи этой версии движка не нужен dosbox, так что это не dosbox, который испортит.)
if (Status == "Ready")
{
System.Diagnostics.Process Proc = new System.Diagnostics.Process();
if (NeedsDosBox)
{
Proc.StartInfo.FileName = String.Format("{0}\\dosbox.exe", Globals.AppDir);
Proc.StartInfo.Arguments = String.Format("{2}\\{0}\\{1}", GameId, Executable, Globals.Gamecache);
}
else
{
Proc.StartInfo.FileName = String.Format("{2}\\{0}\\{1}", GameId, Executable, Globals.Gamecache);
}
Proc.StartInfo.UseShellExecute = true;
Proc.EnableRaisingEvents = true;
Proc.Exited += new EventHandler(Proc_Exited);
Status = "In Game";
Proc.Start();
}