如何在一台电脑上注册一个OCX控件的Win32和x64版本

How to register both the Win32 and x64 version of an OCX control on single computer

就在我认为我理解了微软在 WIN32 和 WIN64 注册表和文件夹方面令人困惑的命名时,我阅读了这篇文章 (Using 32-bit or 64-bit ActiveX Components on x64 Windows),发现自己仍然对如何正确注册 32 位和 64 位 OCX 感到困惑同一台WIN64电脑上的控件。从文章中可以看出,在 WIN64 系统上,默认 regsvr32 用于注册 64 位 OCX 控件和注册 32 位版本的 OCX 控件,我应该使用 C: \windows\syswow64\regsvr32.exe。问题是我一直在使用默认的 regsvr32.exe(在 C:\windows\system32 中)注册我的 WIN32 OCX 控件,当我运行 我的 32 位应用程序使用 32 位 OCX。我有以下问题:

Q1 根据我在文章中阅读的内容,使用默认 regsvr32 注册 WIN32 OCX 是如何工作的。

Q2我想在一台电脑上同时注册WIN32和WIN64版本的OCX控件。从这篇文章看来,我应该分别对 WIN32 和 WIN64 版本使用来自 syswow64 和 system32 的 regsvr32.exe 的两个不同版本。这是正确的吗?

Q3WIN32和WIN64版本OCX的GUID可以一样吗?我认为它可能是相同的,因为注册表的不同部分用于注册这些体系结构中的每一个。正确吗?

Q4 我在注册表的哪个位置查看以确认 OCX 的 64 位和 32 位版本都已注册以确认注册第二个没有覆盖第一个?

根据 Andrew 在此处评论中的建议,我的评论作为答案。

A1 & A2 好吧,既然没有人对此做出回复,我将添加自发帖以来学到的知识。看来我引用的文章在描述如何 运行 32 位和 64 位 regsvr32.exe 时具有误导性。根据我自己的测试,默认的 64 位 regsvr32.exe 似乎可用于注册 32 位和 64 位 OCX 控件。似乎 regsvr32(至少是 64 位版本)查看目标 OCX 或 DLL 文件并确定它是 32 位还是 64 位并将其安装在适当的注册表中。似乎没有必要在 64 位上使用 32 位版本的 regsvr32 windows。

A3 是的,可以注册使用相同 GUID 的 64 位和 32 位版本。

A4 对于 32 位 OCX 在注册表的 HKEY_LOCAL_MACHINE\SOFTWARE\Wow6432Node\Classes\CLSID 区域,对于 64 位它在 HKEY_LOCAL_MACHINE\SOFTWARE\Classes\CLSID