是否可以使用DLL中的COM对象而不使用C ++中的寄存器而不是托管代码?
答案 0 :(得分:8)
是的,如果它不依赖其他注册对象。
LoadLibrary
DLL GetProcAddress
<{1}} DllGetClassObject
获取DllGetClassObject
感兴趣的IClassFactory
指针CLSID
并实例化coclass 答案 1 :(得分:5)
您可以为DLL创建清单文件并使用Registration-Free COM。
答案 2 :(得分:2)
说,需要注册COM DLL,但应用程序没有管理员访问权限。这是一个在HKEY_CURRENT_USER
下注册DLL的简单方法,它不需要管理员权限:
LoadLibrary
加载COM DLL。GetGetProcAddress
获取DllRegisterServer
。RegOverridePredefKey
以使临时注册表重定向:HKEY_LOCAL_MACHINE
至HKEY_CURRENT_USER
和HKEY_CLASSES_ROOT
至HKEY_CURRENT_USER\Software\Classes
。DllRegisterServer
。HKEY_CURRENT_USER
下注册。