首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >如何注册32位out-proc ATL COM服务器以使其可从64位程序使用?

如何注册32位out-proc ATL COM服务器以使其可从64位程序使用?
EN

Stack Overflow用户
提问于 2010-11-17 15:16:03
回答 1查看 1.5K关注 0票数 2

我们有一个32位的ATL out-proc COM服务器。为了在注册表中注册自己,它调用CComModule::UpdateRegistryFromResource()并传递编译到同一可执行文件的资源中的.rgs文件的id。

在32位系统上工作得很好,但在64位系统上就不行了。显然,当32位.exe在64位Windows上运行时,它的注册表访问被重定向,因此它在“32位HKCR”中注册自己,因此64位程序看不到它的注册。

如何以最便宜和最可靠的方式在64位HKCR中注册同一个out-proc服务器?

EN

回答 1

Stack Overflow用户

发布于 2010-11-17 16:04:36

据我所知/记得,你实际上不需要做任何特别的事情。

我检查了一个32位ATL服务器,它是我专门编写的从64位代码( http://www.pretentiousname.com/adobe_pdf_x64_fix/index.html )调用的,注册码完全是样板(除非我忘记了,今天看不到我必须更改的东西)。

除非64位端调用CoCreateInstance(Ex)的代码专门传递CLSCTX_ACTIVATE_64_BIT_SERVER,否则COM应在需要时自动检查32位注册表。(即使CLSCTX_ACTIVATE_64_BIT_SERVER通过了,它也可能会通过。MSDN并不完全清楚该标志是首选项还是必需项。我假设它无论如何都不会被通过。)

也许问题不在于COM服务器是如何注册的,而在于其他方面。或者可能注册了一个损坏的64位服务器版本,可能是在早期的开发/测试中,它被选择而不是32位服务器,但失败了?

顺便说一句,在Windows7和更早的操作系统版本中,注册表的哪些部分是32/64位的,这是有区别的,但我从经验中知道,你不需要在Vista,Windows7和Server2008 R2上做任何特殊的事情。我还没有亲自在其他操作系统版本(例如XPx64)上测试过。

票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/4202262

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档