私はCreateProcess
を呼び出しています。 CreateProcess
は成功を示す0以外を返します。しかし、プロセスへのハンドルはすぐに取得され、プロセスが終了したことを示します。 GetExitCodeProcess
に電話すると、STATUS_DLL_NOT_FOUND
が返されます。CreateProcess STATUS_DLL_NOT_FOUND - どのDLLですか?
私はDLLがないことを理解します。私は正確にどちらがどれかを知っています。しかし、私が理解していないことは、プログラムでそれを理解する方法です。
Windowsが、指定されたDLL(screenshot:http://www.mediafire.com/view/?kd9ddq0e2dlvlb9)を見つけられなかったため、プロセスの開始に失敗したというダイアログが表示されました。ダイアログで、Windowsは、欠落しているDLLを指定します。しかし、私はプログラムで自分自身でその情報を取得する方法はないと思います。
プロセスが開始されずにSTATUS_DLL_NOT_FOUND
が返された場合、ターゲットプロセスがリンクされているライブラリ名をプログラムで見つけられませんでした。こうすることで、特定のインストールでDLLが見つからないか壊れているように見えるエラーレポートを自動的に記録できます。
私は答えを知りたがっています。 Dependency Walkerはそれを行いますが、デバッグAPIを使用しており、別のプロセスと多くのジャンプを必要とします。 (プロセスが無人で実行され、ハングアップするのではなく正常に失敗するような場合など、ダイアログをオフにすることができます) –
重複がありますか? http://stackoverflow.com/questions/597260/how-to-determine-a-windows-executables-dll-dependencies-programatically –
これはあなたの質問に答えることはできませんが、['SetErrorMode()'] (http://msdn.microsoft。DLLが読み込みに失敗したときにWindowsがエラーメッセージダイアログを表示するかどうかを制御するための関数(com/library/ms680621)ただし、エラーダイアログに表示されるデータにアクセスする方法はありません。 –