便携式应用程序需要非便携式DLL

时间:2016-02-12 08:37:30

标签: c++ windows dll com loadlibrary

我有一个应该从USB运行的Windows应用程序,不允许在本地PC上安装任何软件。该应用程序使用MSXML版本4,因此需要msxml4.dll。

在代码中,应用程序使用Windows COM来实例化(CreateInstance/CoCreateInstance)XML文档/元素对象,并且COM(在某种程度上神奇地)在运行时为我加载了所需的dll。 据我所知,COM要求使用regsvr32工具注册dll以找到它并成功加载它。问题是我不允许运行regsvr32工具,我也不想这样做,因为它会改变系统注册表(我猜)。

但是,如果我不被允许向系统注册任何dll,有什么方法可以告诉COM有一个dll应该只暂时使用?我知道DLL redirection,但这只有在dll之前注册时才有效。

1 个答案:

答案 0 :(得分:0)

你猜对COM是对的,它使用注册表信息(由GUID索引)来加载DLL并为你创建实例。我不认为你可以绕过COM而不注册DLL。您应该尝试使用其他没有COM的DLL来处理应用程序中的XML。

如果我的内存正确地为我服务,COM DLL将隐藏您实例的所有符号,即您无法动态加载它。