this codeに似たCreateProcessAsUser()APIを使用して、サービスからユーザーモードプロセスを開始しようとしています。私のコードは99%の時間で正常に動作しますが、APIが成功する時を除いて、私はPROCESS_INFORMATION構造体からプロセスハンドルを取得しますが、プロセス自身は実行しようとしていたインタラクティブなユーザーセッションには表示されません。CreateProcessは成功しましたが、GetExitCodeProcessはC0000142を返します。
興味深いのは、プロセスハンドルでGetExitCodeProcess()を呼び出すと、戻りコード0xC0000142で成功するということです。どんな考え?
障害が発生すると、子プロセスを開始できますか?実行しようとしている.exeが、欠落しているDLLに依存する可能性はありますか? –
リターンコードは動作に確実に適合し、STATUS_DLL_INIT_FAILEDです。これは確かにプロセスの開始を妨げるでしょう。使用するDLLの1つは、そのDllMain()エントリポイントからFALSEを返します。あなたはそれをデバッグできるように、あなたのdevマシン上でこれをreproする必要があります。 –
@HansPassantとMichaelShアドバイスをありがとう。そのユーザーセッションにログインし、手動でプロセスを開始できるかどうかを確認する必要があります。問題はそれが常に発生しないということです...しかし、私が持っている質問は、明らかに何も開始しないときにCreateProcessAsUser()がTRUEを返すのはなぜですか? – ahmd0