プロセスを監視し、プロセスが終了または失敗した場合に再起動するプログラムがあります。それは仕事のプロジェクトとして始まりましたが、家に持ち帰ってゲーム サーバーをホーム サーバーに維持しました。つまり、Minecraft、Terraria、そして最近では Cube World です。プログラムはスタンドアロンで、私のデスクトップに置かれています。Cube World の Server.exe を起動すると、exe が通常 Cube World のフォルダに作成するすべてのファイルがデスクトップに作成されます。私の推測では、私のプログラムにはデスクトップの作業ディレクトリがあるため、それが開始するすべての子プロセス (Server.exe など) は同じ作業ディレクトリを持つことになります。この問題は、自宅にある Cube World のサーバーだけに固有のものではありません。このプログラムは、作業中の重要なバックエンド プロセスでキープ アライブを実行します。
C# でプロセスを開始している場合ProcessStartInfo
、開始されたプロセスの作業ディレクトリが exe があるディレクトリであることを確認するにはどうすればよいですか? プロセスは相対パス名で開始されるか、システム PATH 上にある可能性があり、これが少し難しくなります。