私はでWindows 2000動作するように動作するプログラムを取得しようとしていWindows 2003ます。プログラムを動作させるためにこれまでにやらなければならなかったことはすべてWindows 2003、正しくない構成に関係していました。現在、このコードは次のとおりです。
chr = pAdapterEnvPtr.CreateInstance(__uuidof(PFADAPTERMNGLib::PFAdapterEnv));
戻ってきました:
0x8007007E
または言い換えれば:
The specified module could not be found.
他に2つのプログラムと別の.dllがあり、それらのクラスのインスタンスを正常に作成できます。しかし、これは失敗するようです。
私は以前Procmon、プログラムが何を見つけられないかを理解しようとしましたが、プログラムがProcmon何かを見つけられなかったことを示す可能性のあるものは何も表示しませんでした。
でOleView、クラスのインスタンスを作成しようとすると、次の画像が表示されます。
画像の左側を見ると、のインスタンスを作成しようとするPFComgMngと同じエラーが発生します。(PFAdapterEnvそしてPFCompMng同じプロセスを使用しますPFAdapterMng.exe。)ただしPFMQMonitor、、、PFSendおよびPFTraceすべてが正しく機能します。(、、、およびを使用PFMQListen.exeします。)PFSend.dllPFTraceService.exe
私が注意したかったもう1つのことは、次のコードです。
hr = pPFCompMng.CreateInstance(__uuidof(PFADAPTERMNGLib::PFCompMng));
から以前に呼び出された場合は、完全に正常に機能しPFAdapterMng.exeます。したがって、モジュールを正常に見つけてインスタンスを作成できるように見えPFAdapterMng.exeますが、クラス内のいずれかのインスタンスを作成しようとする他のプロセスPFAdapterMng.exeはモジュールを見つけることができず、このエラーが発生します。
この特定のケースを支援していないのでProcmon、他のプロセスがモジュールを見つけるのを妨げているものを理解するために私が何ができるかを誰かが知っていますか?
アップデート:
サービスとして実行する必要があるため、Dependency Walkerプロファイリングで実行できません。プロファイリング中に実行し、のインスタンスを作成して、メッセージボックスが表示された理由を調べようとしました。残念ながら、何かが欠けていることを示していませんでした。PFAdapterMng.exePFTraceService.exeDependency WalkerOleViewPFAdapterEnvPFCompMngModule not foundDependency Walker
UPDATE2:
ログに何かが足りなかったProcmonので、通話をステップオーバーする直前と通話の直後にイベントをキャプチャして新しいログを作成しましたCreateInstance。多分誰か他の人が見て、私がそれを逃したかどうか教えてくれるでしょうか?何かを見つけることができなかった兆候を見つけることがPFMQListen.exeできません。
Procmonこれは、ファイル、.csvファイル、およびファイルを含むzipフォルダーへのリンク.xmlです。
http://www.mediafire.com/?07jq8zj7emmpsvd
UPDATE3:
そのため、Dependency Walkerプロファイルモードで実行して、のインスタンスを作成することができましたPFAdapterEnv。 Dependency Walker欠落しているものは見つかりませんでした.dll。
したがって、Procmon何も表示されません。また、表示されませんDependency Walker。アセンブリレベルでコードをステップ実行していたollydbgところ、関数でエラーが発生したことに気付きましたNdrClientCall2。これが何か意味があるのかわかりません。
他に何を試すことができるかについてのアイデアはありますか?人々は私がこの問題を解決するのを助けるためにもっと多くの情報を必要としていますか?もしそうなら、聞いてください。
UPDATE4:
を使っ/RegServerてアプリケーションを登録してみましたが、うまくいきました。以前に使用してみましたが、を使用/RegServerしてすべての登録を解除し/UnregServerました。今回は、別のIDでComponent Services実行したかったので、必要なコンポーネントも削除しました。PFAdapterMng
/RegServerしたがって、アプリケーションを実行してダブルクリックすると、すべてが機能するように見えます。ただし、すべてを別の構成で実行したいと思います。
アプリケーションを次のように動作させるためにすべてを構成するにはどうすればよいですか。
PFAdapterMng.exe-として登録し/Service、別のIDで実行するservices.msc
PFTraceServer.exe-として登録し/Service、別のIDで実行するservices.msc
PFMQListen.exe-/RegServerによって開始されるものとして登録しますPFAdapterMng
PFMQSend.dll-に登録Regsvr32され、によってロードされますPFAdapterMng
ありがとう、Krzys
