2010-12-06 10 views
0

私は特定のゲームエンジンのデジタル配信プラットフォームとして使用される小さなプログラムを作成しています。.NETプロセスはクラッシュしますが、エクスプローラから正常に実行されます

このゲームエンジンにはかなり古いバージョンがあり、互換性の問題が発生しているようです。

特定のゲームを実行すると、エクスプローラから直接実行すると正常に動作するように見えますが、プログラム内からプロセスとして実行すると、すぐにクラッシュします。

.NETのプロセスとシェルの違いは何ですか?

HERESに私の現在のコード:

(そのはそれを台無しにされ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(); 

       } 

答えて

4

私の推測では、ということですプロセスは特定の作業ディレクトリから実行する必要があります。エクスプローラでEXEをダブルクリックして実行すると、作業ディレクトリはEXEを含むディレクトリになります。別のプロセスからプロセスを起動すると、別のプロセスを明示的に指定しないと、その作業ディレクトリがプロセスから継承されると私は考えます。したがって、作業ディレクトリ内のいくつかのリソースを探していて、プロセスの作業ディレクトリで実行されているために失敗する可能性があります。

+0

+1良い点。作業ディレクトリが間違っている可能性があります。 – leppie

+0

うまくいけば、それはそういうものかもしれないと思った。ありがとう – Steve

関連する問題