我一直在尝试获得一个可以运行的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
并没有表明缺少任何东西。
更新2:
也许我错过了Procmon
日志中的某些内容,所以我通过在我跨接呼叫之前和之后立即捕获事件来创建一个新日志CreateInstance
。也许其他人可以看看并告诉我我是否错过了它?我根本找不到任何PFMQListen.exe
找不到东西的迹象..
这是一个压缩文件夹的链接,其中包含一个Procmon
文件、一个.csv
文件和一个.xml
文件。
http://www.mediafire.com/?07jq8zj7emmpsvd
更新3:
因此,我设法Dependency Walker
在 Profile 模式下运行以创建PFAdapterEnv
. Dependency Walker
没有发现任何遗漏.dll
的。
因此,Procmon
不显示任何内容,也不显示Dependency Walker
. 我正在使用 单步执行程序集级别的代码ollydbg
,我注意到错误是在函数中创建的NdrClientCall2
。我不知道这是否意味着什么。
关于我还能尝试什么的任何想法?人们是否需要更多信息来帮助我解决这个问题?如果是这样,请询问。
更新4:
我尝试使用/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
谢谢, 克日斯