gpt4 book ai didi

c++ - CreateInstance 返回 "The specified module could not be found."

转载 作者:塔克拉玛干 更新时间:2023-11-03 08:01:04 24 4
gpt4 key购买 nike

我一直在尝试获得一个适用于 Windows 2000 的程序工作 Windows 2003 .到目前为止,我必须做的所有事情才能让程序在 Windows 2003 上运行与不正确的配置有关。现在,这段代码:

chr = pAdapterEnvPtr.CreateInstance(__uuidof(PFADAPTERMNGLib::PFAdapterEnv));
正在返回:
0x8007007E
或者换句话说:
The specified module could not be found.
我有另外两个程序和另一个 .dll,我可以成功地创建这些类的实例。但这似乎失败了。
我用过 Procmon试图找出程序找不到的东西,但是 Procmon没有显示任何可能表明程序找不到东西的东西。
OleView ,如果我尝试创建类的实例,我会看到下图:
IClassFactory::CreateInstance failed.  The specified module could not be found.  severity: SEVERITY_ERROR, facility: FACILITY_WIN32 ($8007007E

如果您查看图像的左侧,尝试创建 PFComgMng 的实例给我同样的错误。 ( PFAdapterEnvPFCompMng 使用相同的过程, PFAdapterMng.exe。)但是, PFMQMonitor , PFSend , 和 PFTrace一切正常。 (使用 PFMQListen.exePFSend.dllPFTraceService.exe 。)
我要注意的另一件事是以下代码:
hr = pPFCompMng.CreateInstance(__uuidof(PFADAPTERMNGLib::PFCompMng));
PFAdapterMng.exe 调用它时工作得很好.所以看起来像 PFAdapterMng.exe可以成功找到模块并创建实例,但任何其他尝试创建 PFAdapterMng.exe 中的类实例的任何其他进程找不到模块,导致这个错误。
由于 Procmon对这种特定情况没有帮助,有谁知道我可以做些什么来弄清楚是什么让其他进程无法找到模块?
更新:
我无法运行 Dependency Walker有分析因为 PFAdapterMng.exePFTraceService.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 加载
谢谢,
克日斯

最佳答案

我的猜测是它与可执行文件的某些DLL依赖项的搜索路径有关。
您可以在每个模块上尝试“Dependency Walker”以查看是否所有 DLL 都可用:http://www.dependencywalker.com/
并根据需要更新搜索路径。

关于c++ - CreateInstance 返回 "The specified module could not be found.",我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/6880371/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com