给定一些调用CoCreateInstance来创建已注册COM对象的实例的现有代码,是否可以重定向这些调用以创建另一个实例?

这个想法是,在同一过程中(出于测试目的),并且在不更改原始代码或不影响任何其他过程的情况下,当它请求系统提供的CLSID_ShellLink(例如)时,它将创建一个自定义类型的实例(实现在相同的代码库中)实现相同的接口(interface),而不是通常创建的“真实”实例。

为了澄清起见:我正在寻找一个API调用,该调用可以说“嘿CoCreateInstance,先调用此本地对象以创建实例,然后再查看注册信息”。而且,它一定是可以通过编程方式完成的工作,而不是通过操纵注册表或配置文件来完成的。它需要在代码中可切换。

最佳答案

如果正在创建的对象正在处理中,并且您可以在正在谈论的过程中调用CoRegisterClassObject,则可以为特定对象注册自己的类工厂...也取决于调用CoCreateInstance时使用的标志。

08-06 15:36