我一直在尝试使用Windows 2000
的程序来处理Windows 2003
。到目前为止,为了让程序在Windows 2003
上运行,我必须做的一切都与错误的配置有关。现在,这段代码:
chr = pAdapterEnvPtr.CreateInstance(__uuidof(PFADAPTERMNGLib::PFAdapterEnv));
正在回归:
0x8007007E
或换句话说:
The specified module could not be found.
我有两个其他程序和另一个.dll,我可以成功创建这些类的实例。但这似乎失败了。
我使用Procmon
试图找出程序找不到的内容,但是Procmon
没有显示任何可能表明程序找不到内容的内容。
在OleView
中,如果我尝试创建该类的实例,我会看到以下图像:
如果查看图像的左侧,尝试创建PFComgMng
的实例会给出同样的错误。 (PFAdapterEnv
和PFCompMng
使用相同的流程PFAdapterMng.exe
。)但是,PFMQMonitor
,PFSend
和PFTrace
都能正常运行。 (使用PFMQListen.exe
,PFSend.dll
和PFTraceService.exe
。)
我想要注意的另一件事是以下代码:
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
文件和.xml
文件的压缩文件夹的链接。
http://www.mediafire.com/?07jq8zj7emmpsvd
UPDATE3:
因此,我设法让Dependency Walker
在个人资料模式下运行,以创建PFAdapterEnv
的实例。 Dependency Walker
未找到任何遗漏的.dll
。
因此,Procmon
没有显示任何内容,Dependency Walker
也没有显示任何内容。我正在使用ollydbg
逐步处理程序集级别的代码,我注意到错误是在函数NdrClientCall2
中创建的。我不知道这是否意味着什么。
关于我还能尝试什么的任何想法?人们是否需要更多信息来帮助我解决这个问题?如果是,请询问。
UPDATE4:
我尝试使用/RegServer
注册应用程序,但它确实有效。我之前尝试使用/RegServer
,我只是使用/UnregServer
取消注册所有内容。这一次,我还删除了我需要的Component Services
组件,因为我想在另一个标识下运行PFAdapterMng
。
因此,在/RegServer
上运行并双击应用程序时似乎一切正常。但是,我希望一切都在不同的配置下运行。
如何配置所有内容以使应用程序按如下方式工作:
PFAdapterMng.exe
- 注册为/Service
并通过services.msc
以其他身份运行
PFTraceServer.exe
- 注册为/Service
并通过services.msc
PFMQListen.exe
- 注册为/RegServer
,由PFAdapterMng
启动
PFMQSend.dll
- 已在Regsvr32
注册并由PFAdapterMng
谢谢, Krzys
答案 0 :(得分:0)
我的猜测是它与可执行文件的某些DLL依赖项的搜索路径有关。 您可以在每个模块上尝试“Dependency Walker”以查看是否所有DLL都可用:http://www.dependencywalker.com/ 如果需要,请更新搜索路径。