Sti*_*fel 5 com registry com-interop regasm
当我使用regasm.exe注册我的.NET程序集时注册表项
HKEY_CLASSES_ROOT\CLSID {111E32AD-4BF8-495F-AB4D-6C61BD463EA4}\InprocServer32的
设置为"mscoree.dll".
但是,我试图模仿用C编写的现有COM服务器.当注册这个旧的COM服务器时,InprocServer32被设置为该组件的完整路径.
不幸的是,现有系统(我无法更改的插件主机)读取并使用此值 - "mscoree.dll"值会混淆.
我的解决方案可能是手动修补此注册表项 - 但我想了解为什么regasm将"mscoree.dll"写入InprocServer32.
解释很简单.当您在进程中使用本机(非托管)COM服务器时,它将被加载到使用者进程中,而使用者进程直接调用其函数.
使用托管代码COM暴露的程序集,这无法轻松实现.在托管代码的情况下,需要执行托管/非托管交互的中间层.mscoree.dll充当这个中间层.因此,当CoCreateInstance() mscoree.dll加载消费者调用并通过加载COM暴露的程序集托管代码并将所有调用转发给后者时,模拟COM服务器.
| 归档时间: |
|
| 查看次数: |
2246 次 |
| 最近记录: |