私はで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.dll
PFTraceService.exe
私が注意したかったもう1つのことは、次のコードです。
hr = pPFCompMng.CreateInstance(__uuidof(PFADAPTERMNGLib::PFCompMng));
から以前に呼び出された場合は、完全に正常に機能しPFAdapterMng.exe
ます。したがって、モジュールを正常に見つけてインスタンスを作成できるように見えPFAdapterMng.exe
ますが、クラス内のいずれかのインスタンスを作成しようとする他のプロセスPFAdapterMng.exe
はモジュールを見つけることができず、このエラーが発生します。
この特定のケースを支援していないのでProcmon
、他のプロセスがモジュールを見つけるのを妨げているものを理解するために私が何ができるかを誰かが知っていますか?
アップデート:
サービスとして実行する必要があるため、Dependency Walker
プロファイリングで実行できません。プロファイリング中に実行し、のインスタンスを作成して、メッセージボックスが表示された理由を調べようとしました。残念ながら、何かが欠けていることを示していませんでした。PFAdapterMng.exe
PFTraceService.exe
Dependency Walker
OleView
PFAdapterEnv
PFCompMng
Module not found
Dependency 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