我有一个应该从USB运行的Windows应用程序,不允许在本地PC上安装任何软件。该应用程序使用MSXML版本4,因此需要msxml4.dll。
在代码中,应用程序使用Windows COM来实例化(CreateInstance/CoCreateInstance)XML文档/元素对象,并且COM(在某种程度上神奇地)在运行时为我加载了所需的dll。 据我所知,COM要求使用regsvr32工具注册dll以找到它并成功加载它。问题是我不允许运行regsvr32工具,我也不想这样做,因为它会改变系统注册表(我猜)。
但是,如果我不被允许向系统注册任何dll,有什么方法可以告诉COM有一个dll应该只暂时使用?我知道DLL redirection,但这只有在dll之前注册时才有效。
答案 0 :(得分:0)
你猜对COM是对的,它使用注册表信息(由GUID索引)来加载DLL并为你创建实例。我不认为你可以绕过COM而不注册DLL。您应该尝试使用其他没有COM的DLL来处理应用程序中的XML。
如果我的内存正确地为我服务,COM DLL将隐藏您实例的所有符号,即您无法动态加载它。