このコードを使用して実行可能ファイルを開始しています:
Process proc = new Process();
proc.StartInfo.FileName = executablePath;
proc.Start();
proc.WaitForInputIdle();
この呼び出しの後、proc.Id
実際のプロセスIDではない整数が返されます。タスクマネージャーには、このプロセス用の別のIDがあり、MS UIオートメーションを使用してこのアプリケーションにアクセスしています。これも、タスクマネージャーと同じIDを返します。だから私の質問は、どうすれば開始されたプロセスの実際のプロセスIDを取得できますか?
アップデート
Windows 7では正常に動作し、正しいIDが返されることがわかりましたが、WindowsXPでは返されません。理由は何ですか?
シナリオ
アプリケーションのシナリオは次のとおりです。私は実行中の組み込みHTTPサーバーを持っていますが、これは私ではなく実装されています(ここにソースがあります)。クライアントはWebサーバーに接続し、プログラムを実行するための要求を送信します。サーバーのリクエストハンドラーで、Process.start()
リクエストされたアプリケーションを起動するために使用しています。Webサーバーとして、プログラムはそれに接続されているすべてのクライアントセッションのスレッドを作成します(私はそれを書いていなかったので、そうだと思います)。これは、Windows XP X86 Service Pack 3にのみ存在する問題を特定するのに、どういうわけか役立ちますか?