COM CoCreateInstanceEx如何尝试加载类型(对于非管理员获胜用户)?
我有一个非常复杂的问题,只发生在非管理员Windows用户身上。
我运行一个脚本S驻留在桌面上并调用C ++ DLL中的函数。然后流程如下:
我的C ++ DLL创建了一个Delphi进程,并将GUID作为参数发送给它。
在初始化时,我的Delphi进程使用COM对象工厂注册具有给定GUID的类C.
我的C ++ DLL尝试使用相同的GUID调用CoCreateInstanceEx。
==>操作失败,HResult 0x80029c4a加载类型库/ DLL时出错。
德尔福方面也没有例外 - 注册似乎顺利进行。
我使用了进程监视器,并惊讶地看到,当调用CoCreateInstanceEx时,尝试从错误的位置读取我的Delphi exe文件。尝试从脚本S所在的桌面访问exe,而不是尝试访问exe注册的位置,当然exe不在那里。
这仅发生在非管理员用户身上。此外,如果管理员用户之前曾经运行过这个脚本,那么对于非管理员来说,它运行得非常好。
我现在试图弄清楚为什么会这样。这就是我尝试理解CoCreateInstanceEx流程的原因。我没有在网上找到任何有用的信息。那么CoCreateInstanceEx如何尝试加载类型?它试图在哪里看?你知道如何描述这种情况吗?
任何信息或想法将非常感谢!
没有找到相关结果
已邀请:
1 个回复
淑灯