在 Windows 64 位上注册 COM 对象以在 Excel-32 位中使用失败

问题描述 投票:0回答:1

我有一个使用 COM 对象的 Excel 应用程序。

COM 对象是 VB.net,并在针对“任何 CPU”的 Visual Studio 中编译。

我仅为当前用户注册 COM 对象。我的 NSIS 安装程序执行以下操作:

  1. NSIS 运行 Regasm 并输出 reg 文件。

  2. NSIS 将 reg 文件中的“[HKEY_CLASSES_ROOT”的所有实例替换为“[HKEY_CURRENT_USER\Software\Classes”。

  3. NSIS 执行 reg 文件并创建所有适当的注册表项。

这适用于:

Windows 10 64 位/Excel 64 位

Windows 10 32 位/Excel 32 位

但是,我遇到了错误:

Windows 10 64 位 / Excel 32 位

对于 Windows 10 64 位/Excel 32 位,我的理解是我必须将“[HKEY_CLASSES_ROOT”替换为“[HKEY_CURRENT_USER\SOFTWARE\Classes\WOW6432Node”

我在 NSIS 中执行此操作,但 Excel 32 位会引发错误“无法创建 ActiveX 组件。”

我尝试将“[HKEY_CLASSES_ROOT”替换为“[HKEY_CURRENT_USER\SOFTWARE\Classes”,但随后 Excel 出现错误“类未注册。”

如果我更改 reg 文件以仅使用“[HKEY_CLASSES_ROOT”(并忘记为当前用户注册)Excel 32 位可以很好地实例化 COM 对象。

问题是我只想为当前用户注册COM对象。

我应该使用当前用户的哪个注册表路径,但 Windows 64 位上的 Excel 32 位可以实例化它?

这是失败的 reg 文件,其中“[HKEY_CLASSES_ROOT”已替换为“[HKEY_CURRENT_USER\SOFTWARE\Classes\WOW6432Node”:


[HKEY_CURRENT_USER\SOFTWARE\Classes\WOW6432Node\LicenseManager.My.MySettings]
@="LicenseManager.My.MySettings"

[HKEY_CURRENT_USER\SOFTWARE\Classes\WOW6432Node\LicenseManager.My.MySettings\CLSID]
@="{4DA8C0C5-425F-38A6-B63A-CD1090B22B25}"

[HKEY_CURRENT_USER\SOFTWARE\Classes\WOW6432Node\CLSID\{4DA8C0C5-425F-38A6-B63A-CD1090B22B25}]
@="LicenseManager.My.MySettings"

[HKEY_CURRENT_USER\SOFTWARE\Classes\WOW6432Node\CLSID\{4DA8C0C5-425F-38A6-B63A-CD1090B22B25}\InprocServer32]
@="mscoree.dll"
"ThreadingModel"="Both"
"Class"="LicenseManager.My.MySettings"
"Assembly"="LicenseManager, Version=1.0.0.0, Culture=neutral, PublicKeyToken=null"
"RuntimeVersion"="v4.0.30319"
"CodeBase"="file:///C:/Users/MatthewB/AppData/Local/Stat Cruncher/Bin/LicenseManager.dll"

[HKEY_CURRENT_USER\SOFTWARE\Classes\WOW6432Node\CLSID\{4DA8C0C5-425F-38A6-B63A-CD1090B22B25}\InprocServer32\1.0.0.0]
"Class"="LicenseManager.My.MySettings"
"Assembly"="LicenseManager, Version=1.0.0.0, Culture=neutral, PublicKeyToken=null"
"RuntimeVersion"="v4.0.30319"
"CodeBase"="file:///C:/Users/MatthewB/AppData/Local/Stat Cruncher/Bin/LicenseManager.dll"

[HKEY_CURRENT_USER\SOFTWARE\Classes\WOW6432Node\CLSID\{4DA8C0C5-425F-38A6-B63A-CD1090B22B25}\ProgId]
@="LicenseManager.My.MySettings"

[HKEY_CURRENT_USER\SOFTWARE\Classes\WOW6432Node\CLSID\{4DA8C0C5-425F-38A6-B63A-CD1090B22B25}\Implemented Categories\{62C8FE65-4EBB-45E7-B440-6E39B2CDBF29}]

[HKEY_CURRENT_USER\SOFTWARE\Classes\WOW6432Node\LicenseManager.clsSharedEnums]
@="LicenseManager.clsSharedEnums"

[HKEY_CURRENT_USER\SOFTWARE\Classes\WOW6432Node\LicenseManager.clsSharedEnums\CLSID]
@="{E24584F3-CD27-34B7-B8B5-4986784ACEE6}"

[HKEY_CURRENT_USER\SOFTWARE\Classes\WOW6432Node\CLSID\{E24584F3-CD27-34B7-B8B5-4986784ACEE6}]
@="LicenseManager.clsSharedEnums"

[HKEY_CURRENT_USER\SOFTWARE\Classes\WOW6432Node\CLSID\{E24584F3-CD27-34B7-B8B5-4986784ACEE6}\InprocServer32]
@="mscoree.dll"
"ThreadingModel"="Both"
"Class"="LicenseManager.clsSharedEnums"
"Assembly"="LicenseManager, Version=1.0.0.0, Culture=neutral, PublicKeyToken=null"
"RuntimeVersion"="v4.0.30319"
"CodeBase"="file:///C:/Users/MatthewB/AppData/Local/Stat Cruncher/Bin/LicenseManager.dll"

[HKEY_CURRENT_USER\SOFTWARE\Classes\WOW6432Node\CLSID\{E24584F3-CD27-34B7-B8B5-4986784ACEE6}\InprocServer32\1.0.0.0]
"Class"="LicenseManager.clsSharedEnums"
"Assembly"="LicenseManager, Version=1.0.0.0, Culture=neutral, PublicKeyToken=null"
"RuntimeVersion"="v4.0.30319"
"CodeBase"="file:///C:/Users/MatthewB/AppData/Local/Stat Cruncher/Bin/LicenseManager.dll"

[HKEY_CURRENT_USER\SOFTWARE\Classes\WOW6432Node\CLSID\{E24584F3-CD27-34B7-B8B5-4986784ACEE6}\ProgId]
@="LicenseManager.clsSharedEnums"

[HKEY_CURRENT_USER\SOFTWARE\Classes\WOW6432Node\CLSID\{E24584F3-CD27-34B7-B8B5-4986784ACEE6}\Implemented Categories\{62C8FE65-4EBB-45E7-B440-6E39B2CDBF29}]

[HKEY_CURRENT_USER\SOFTWARE\Classes\WOW6432Node\LicenseManager.clsSharedGlobals]
@="LicenseManager.clsSharedGlobals"

[HKEY_CURRENT_USER\SOFTWARE\Classes\WOW6432Node\LicenseManager.clsSharedGlobals\CLSID]
@="{E86A81E1-2926-3C9D-A667-02954898E09E}"

[HKEY_CURRENT_USER\SOFTWARE\Classes\WOW6432Node\CLSID\{E86A81E1-2926-3C9D-A667-02954898E09E}]
@="LicenseManager.clsSharedGlobals"

[HKEY_CURRENT_USER\SOFTWARE\Classes\WOW6432Node\CLSID\{E86A81E1-2926-3C9D-A667-02954898E09E}\InprocServer32]
@="mscoree.dll"
"ThreadingModel"="Both"
"Class"="LicenseManager.clsSharedGlobals"
"Assembly"="LicenseManager, Version=1.0.0.0, Culture=neutral, PublicKeyToken=null"
"RuntimeVersion"="v4.0.30319"
"CodeBase"="file:///C:/Users/MatthewB/AppData/Local/Stat Cruncher/Bin/LicenseManager.dll"

[HKEY_CURRENT_USER\SOFTWARE\Classes\WOW6432Node\CLSID\{E86A81E1-2926-3C9D-A667-02954898E09E}\InprocServer32\1.0.0.0]
"Class"="LicenseManager.clsSharedGlobals"
"Assembly"="LicenseManager, Version=1.0.0.0, Culture=neutral, PublicKeyToken=null"
"RuntimeVersion"="v4.0.30319"
"CodeBase"="file:///C:/Users/MatthewB/AppData/Local/Stat Cruncher/Bin/LicenseManager.dll"

[HKEY_CURRENT_USER\SOFTWARE\Classes\WOW6432Node\CLSID\{E86A81E1-2926-3C9D-A667-02954898E09E}\ProgId]
@="LicenseManager.clsSharedGlobals"

[HKEY_CURRENT_USER\SOFTWARE\Classes\WOW6432Node\CLSID\{E86A81E1-2926-3C9D-A667-02954898E09E}\Implemented Categories\{62C8FE65-4EBB-45E7-B440-6E39B2CDBF29}]

[HKEY_CURRENT_USER\SOFTWARE\Classes\WOW6432Node\LicenseManager.clsSharedMethods]
@="LicenseManager.clsSharedMethods"

[HKEY_CURRENT_USER\SOFTWARE\Classes\WOW6432Node\LicenseManager.clsSharedMethods\CLSID]
@="{09CFD406-B291-33AC-A0CD-145760ED3428}"

[HKEY_CURRENT_USER\SOFTWARE\Classes\WOW6432Node\CLSID\{09CFD406-B291-33AC-A0CD-145760ED3428}]
@="LicenseManager.clsSharedMethods"

[HKEY_CURRENT_USER\SOFTWARE\Classes\WOW6432Node\CLSID\{09CFD406-B291-33AC-A0CD-145760ED3428}\InprocServer32]
@="mscoree.dll"
"ThreadingModel"="Both"
"Class"="LicenseManager.clsSharedMethods"
"Assembly"="LicenseManager, Version=1.0.0.0, Culture=neutral, PublicKeyToken=null"
"RuntimeVersion"="v4.0.30319"
"CodeBase"="file:///C:/Users/MatthewB/AppData/Local/Stat Cruncher/Bin/LicenseManager.dll"

[HKEY_CURRENT_USER\SOFTWARE\Classes\WOW6432Node\CLSID\{09CFD406-B291-33AC-A0CD-145760ED3428}\InprocServer32\1.0.0.0]
"Class"="LicenseManager.clsSharedMethods"
"Assembly"="LicenseManager, Version=1.0.0.0, Culture=neutral, PublicKeyToken=null"
"RuntimeVersion"="v4.0.30319"
"CodeBase"="file:///C:/Users/MatthewB/AppData/Local/Stat Cruncher/Bin/LicenseManager.dll"

[HKEY_CURRENT_USER\SOFTWARE\Classes\WOW6432Node\CLSID\{09CFD406-B291-33AC-A0CD-145760ED3428}\ProgId]
@="LicenseManager.clsSharedMethods"

[HKEY_CURRENT_USER\SOFTWARE\Classes\WOW6432Node\CLSID\{09CFD406-B291-33AC-A0CD-145760ED3428}\Implemented Categories\{62C8FE65-4EBB-45E7-B440-6E39B2CDBF29}]

[HKEY_CURRENT_USER\SOFTWARE\Classes\WOW6432Node\LicenseManager.clsSharedValidations]
@="LicenseManager.clsSharedValidations"

[HKEY_CURRENT_USER\SOFTWARE\Classes\WOW6432Node\LicenseManager.clsSharedValidations\CLSID]
@="{3992C5E2-1D50-3A99-B951-B6D2B83FF365}"

[HKEY_CURRENT_USER\SOFTWARE\Classes\WOW6432Node\CLSID\{3992C5E2-1D50-3A99-B951-B6D2B83FF365}]
@="LicenseManager.clsSharedValidations"

[HKEY_CURRENT_USER\SOFTWARE\Classes\WOW6432Node\CLSID\{3992C5E2-1D50-3A99-B951-B6D2B83FF365}\InprocServer32]
@="mscoree.dll"
"ThreadingModel"="Both"
"Class"="LicenseManager.clsSharedValidations"
"Assembly"="LicenseManager, Version=1.0.0.0, Culture=neutral, PublicKeyToken=null"
"RuntimeVersion"="v4.0.30319"
"CodeBase"="file:///C:/Users/MatthewB/AppData/Local/Stat Cruncher/Bin/LicenseManager.dll"

[HKEY_CURRENT_USER\SOFTWARE\Classes\WOW6432Node\CLSID\{3992C5E2-1D50-3A99-B951-B6D2B83FF365}\InprocServer32\1.0.0.0]
"Class"="LicenseManager.clsSharedValidations"
"Assembly"="LicenseManager, Version=1.0.0.0, Culture=neutral, PublicKeyToken=null"
"RuntimeVersion"="v4.0.30319"
"CodeBase"="file:///C:/Users/MatthewB/AppData/Local/Stat Cruncher/Bin/LicenseManager.dll"

[HKEY_CURRENT_USER\SOFTWARE\Classes\WOW6432Node\CLSID\{3992C5E2-1D50-3A99-B951-B6D2B83FF365}\ProgId]
@="LicenseManager.clsSharedValidations"

[HKEY_CURRENT_USER\SOFTWARE\Classes\WOW6432Node\CLSID\{3992C5E2-1D50-3A99-B951-B6D2B83FF365}\Implemented Categories\{62C8FE65-4EBB-45E7-B440-6E39B2CDBF29}]

[HKEY_CURRENT_USER\SOFTWARE\Classes\WOW6432Node\LicenseManager.clsEnums]
@="LicenseManager.clsEnums"

[HKEY_CURRENT_USER\SOFTWARE\Classes\WOW6432Node\LicenseManager.clsEnums\CLSID]
@="{3D8E218E-9BC7-39A1-A513-FCD7A8F3B29C}"

[HKEY_CURRENT_USER\SOFTWARE\Classes\WOW6432Node\CLSID\{3D8E218E-9BC7-39A1-A513-FCD7A8F3B29C}]
@="LicenseManager.clsEnums"

[HKEY_CURRENT_USER\SOFTWARE\Classes\WOW6432Node\CLSID\{3D8E218E-9BC7-39A1-A513-FCD7A8F3B29C}\InprocServer32]
@="mscoree.dll"
"ThreadingModel"="Both"
"Class"="LicenseManager.clsEnums"
"Assembly"="LicenseManager, Version=1.0.0.0, Culture=neutral, PublicKeyToken=null"
"RuntimeVersion"="v4.0.30319"
"CodeBase"="file:///C:/Users/MatthewB/AppData/Local/Stat Cruncher/Bin/LicenseManager.dll"

[HKEY_CURRENT_USER\SOFTWARE\Classes\WOW6432Node\CLSID\{3D8E218E-9BC7-39A1-A513-FCD7A8F3B29C}\InprocServer32\1.0.0.0]
"Class"="LicenseManager.clsEnums"
"Assembly"="LicenseManager, Version=1.0.0.0, Culture=neutral, PublicKeyToken=null"
"RuntimeVersion"="v4.0.30319"
"CodeBase"="file:///C:/Users/MatthewB/AppData/Local/Stat Cruncher/Bin/LicenseManager.dll"

[HKEY_CURRENT_USER\SOFTWARE\Classes\WOW6432Node\CLSID\{3D8E218E-9BC7-39A1-A513-FCD7A8F3B29C}\ProgId]
@="LicenseManager.clsEnums"

[HKEY_CURRENT_USER\SOFTWARE\Classes\WOW6432Node\CLSID\{3D8E218E-9BC7-39A1-A513-FCD7A8F3B29C}\Implemented Categories\{62C8FE65-4EBB-45E7-B440-6E39B2CDBF29}]

[HKEY_CURRENT_USER\SOFTWARE\Classes\WOW6432Node\LicenseManager.clsLM]
@="LicenseManager.clsLM"

[HKEY_CURRENT_USER\SOFTWARE\Classes\WOW6432Node\LicenseManager.clsLM\CLSID]
@="{D7128D56-C022-3F4A-9200-777C260C40EA}"

[HKEY_CURRENT_USER\SOFTWARE\Classes\WOW6432Node\CLSID\{D7128D56-C022-3F4A-9200-777C260C40EA}]
@="LicenseManager.clsLM"

[HKEY_CURRENT_USER\SOFTWARE\Classes\WOW6432Node\CLSID\{D7128D56-C022-3F4A-9200-777C260C40EA}\InprocServer32]
@="mscoree.dll"
"ThreadingModel"="Both"
"Class"="LicenseManager.clsLM"
"Assembly"="LicenseManager, Version=1.0.0.0, Culture=neutral, PublicKeyToken=null"
"RuntimeVersion"="v4.0.30319"
"CodeBase"="file:///C:/Users/MatthewB/AppData/Local/Stat Cruncher/Bin/LicenseManager.dll"

[HKEY_CURRENT_USER\SOFTWARE\Classes\WOW6432Node\CLSID\{D7128D56-C022-3F4A-9200-777C260C40EA}\InprocServer32\1.0.0.0]
"Class"="LicenseManager.clsLM"
"Assembly"="LicenseManager, Version=1.0.0.0, Culture=neutral, PublicKeyToken=null"
"RuntimeVersion"="v4.0.30319"
"CodeBase"="file:///C:/Users/MatthewB/AppData/Local/Stat Cruncher/Bin/LicenseManager.dll"

[HKEY_CURRENT_USER\SOFTWARE\Classes\WOW6432Node\CLSID\{D7128D56-C022-3F4A-9200-777C260C40EA}\ProgId]
@="LicenseManager.clsLM"

[HKEY_CURRENT_USER\SOFTWARE\Classes\WOW6432Node\CLSID\{D7128D56-C022-3F4A-9200-777C260C40EA}\Implemented Categories\{62C8FE65-4EBB-45E7-B440-6E39B2CDBF29}]

[HKEY_CURRENT_USER\SOFTWARE\Classes\WOW6432Node\LicenseManager.clsPublicTypes]
@="LicenseManager.clsPublicTypes"

[HKEY_CURRENT_USER\SOFTWARE\Classes\WOW6432Node\LicenseManager.clsPublicTypes\CLSID]
@="{47913F05-609A-384C-A44A-26735CCC1F57}"

[HKEY_CURRENT_USER\SOFTWARE\Classes\WOW6432Node\CLSID\{47913F05-609A-384C-A44A-26735CCC1F57}]
@="LicenseManager.clsPublicTypes"

[HKEY_CURRENT_USER\SOFTWARE\Classes\WOW6432Node\CLSID\{47913F05-609A-384C-A44A-26735CCC1F57}\InprocServer32]
@="mscoree.dll"
"ThreadingModel"="Both"
"Class"="LicenseManager.clsPublicTypes"
"Assembly"="LicenseManager, Version=1.0.0.0, Culture=neutral, PublicKeyToken=null"
"RuntimeVersion"="v4.0.30319"
"CodeBase"="file:///C:/Users/MatthewB/AppData/Local/Stat Cruncher/Bin/LicenseManager.dll"

[HKEY_CURRENT_USER\SOFTWARE\Classes\WOW6432Node\CLSID\{47913F05-609A-384C-A44A-26735CCC1F57}\InprocServer32\1.0.0.0]
"Class"="LicenseManager.clsPublicTypes"
"Assembly"="LicenseManager, Version=1.0.0.0, Culture=neutral, PublicKeyToken=null"
"RuntimeVersion"="v4.0.30319"
"CodeBase"="file:///C:/Users/MatthewB/AppData/Local/Stat Cruncher/Bin/LicenseManager.dll"

[HKEY_CURRENT_USER\SOFTWARE\Classes\WOW6432Node\CLSID\{47913F05-609A-384C-A44A-26735CCC1F57}\ProgId]
@="LicenseManager.clsPublicTypes"

[HKEY_CURRENT_USER\SOFTWARE\Classes\WOW6432Node\CLSID\{47913F05-609A-384C-A44A-26735CCC1F57}\Implemented Categories\{62C8FE65-4EBB-45E7-B440-6E39B2CDBF29}]

[HKEY_CURRENT_USER\SOFTWARE\Classes\WOW6432Node\LicenseManager.JSONLicense]
@="LicenseManager.JSONLicense"

[HKEY_CURRENT_USER\SOFTWARE\Classes\WOW6432Node\LicenseManager.JSONLicense\CLSID]
@="{E01DBF39-ED8E-3975-8ECF-BA43D3D73DFF}"

[HKEY_CURRENT_USER\SOFTWARE\Classes\WOW6432Node\CLSID\{E01DBF39-ED8E-3975-8ECF-BA43D3D73DFF}]
@="LicenseManager.JSONLicense"

[HKEY_CURRENT_USER\SOFTWARE\Classes\WOW6432Node\CLSID\{E01DBF39-ED8E-3975-8ECF-BA43D3D73DFF}\InprocServer32]
@="mscoree.dll"
"ThreadingModel"="Both"
"Class"="LicenseManager.JSONLicense"
"Assembly"="LicenseManager, Version=1.0.0.0, Culture=neutral, PublicKeyToken=null"
"RuntimeVersion"="v4.0.30319"
"CodeBase"="file:///C:/Users/MatthewB/AppData/Local/Stat Cruncher/Bin/LicenseManager.dll"

[HKEY_CURRENT_USER\SOFTWARE\Classes\WOW6432Node\CLSID\{E01DBF39-ED8E-3975-8ECF-BA43D3D73DFF}\InprocServer32\1.0.0.0]
"Class"="LicenseManager.JSONLicense"
"Assembly"="LicenseManager, Version=1.0.0.0, Culture=neutral, PublicKeyToken=null"
"RuntimeVersion"="v4.0.30319"
"CodeBase"="file:///C:/Users/MatthewB/AppData/Local/Stat Cruncher/Bin/LicenseManager.dll"

[HKEY_CURRENT_USER\SOFTWARE\Classes\WOW6432Node\CLSID\{E01DBF39-ED8E-3975-8ECF-BA43D3D73DFF}\ProgId]
@="LicenseManager.JSONLicense"

[HKEY_CURRENT_USER\SOFTWARE\Classes\WOW6432Node\CLSID\{E01DBF39-ED8E-3975-8ECF-BA43D3D73DFF}\Implemented Categories\{62C8FE65-4EBB-45E7-B440-6E39B2CDBF29}]

[HKEY_CURRENT_USER\SOFTWARE\Classes\WOW6432Node\Record\{46C43862-DC65-3BF1-8D9A-B315AF9FA80D}\1.0.0.0]
"Class"="LicenseManager.clsSharedEnums+enuLMForms"
"Assembly"="LicenseManager, Version=1.0.0.0, Culture=neutral, PublicKeyToken=null"
"RuntimeVersion"="v4.0.30319"
"CodeBase"="file:///C:/Users/MatthewB/AppData/Local/Stat Cruncher/Bin/LicenseManager.dll"

[HKEY_CURRENT_USER\SOFTWARE\Classes\WOW6432Node\Record\{7DAF1AFB-548E-3A9C-B003-BBFCFEE27533}\1.0.0.0]
"Class"="LicenseManager.clsEnums+enuLicenseErrors"
"Assembly"="LicenseManager, Version=1.0.0.0, Culture=neutral, PublicKeyToken=null"
"RuntimeVersion"="v4.0.30319"
"CodeBase"="file:///C:/Users/MatthewB/AppData/Local/Stat Cruncher/Bin/LicenseManager.dll"

[HKEY_CURRENT_USER\SOFTWARE\Classes\WOW6432Node\Record\{12C1B614-7200-38DB-A4C3-D88B23300A65}\1.0.0.0]
"Class"="LicenseManager.clsLM+enuChangeSettingsIniFile"
"Assembly"="LicenseManager, Version=1.0.0.0, Culture=neutral, PublicKeyToken=null"
"RuntimeVersion"="v4.0.30319"
"CodeBase"="file:///C:/Users/MatthewB/AppData/Local/Stat Cruncher/Bin/LicenseManager.dll"

[HKEY_CURRENT_USER\SOFTWARE\Classes\WOW6432Node\Record\{40B82F7E-0D53-39AC-982C-3B0D058F65D9}\1.0.0.0]
"Class"="LicenseManager.clsLM+enuCertificateOverride"
"Assembly"="LicenseManager, Version=1.0.0.0, Culture=neutral, PublicKeyToken=null"
"RuntimeVersion"="v4.0.30319"
"CodeBase"="file:///C:/Users/MatthewB/AppData/Local/Stat Cruncher/Bin/LicenseManager.dll"

[HKEY_CURRENT_USER\SOFTWARE\Classes\WOW6432Node\Record\{2AFA5EDE-930C-3023-848E-B8B58963FF24}\1.0.0.0]
"Class"="LicenseManager.clsPublicTypes+typLicenseInfo"
"Assembly"="LicenseManager, Version=1.0.0.0, Culture=neutral, PublicKeyToken=null"
"RuntimeVersion"="v4.0.30319"
"CodeBase"="file:///C:/Users/MatthewB/AppData/Local/Stat Cruncher/Bin/LicenseManager.dll"

这是所有用户注册到 [HKEY_CLASSES_ROOT] 的 reg 文件。奇怪的是,如果我导入两个 reg 文件:

  1. 将 reg 文件导入到 [HKEY_CURRENT_USER\SOFTWARE\Classes\WOW6432Node

  1. 将第二个 reg 文件导入到“[HKEY_CLASSES_ROOT”

然后 COM 对象就可以在 Windows 64 位的 Excel 32 位中实例化。

我必须将两者导入到“[HKEY_CLASSES_ROOT”和“[HKEY_CURRENT_USER\SOFTWARE\Classes\WOW6432Node”才能正常工作。

我需要了解这里发生了什么以及正确的方法是什么。

这是导入到“[HKEY_CLASSES_ROOT”的reg文件:


[HKEY_CLASSES_ROOT\LicenseManager.My.MySettings]
@="LicenseManager.My.MySettings"

[HKEY_CLASSES_ROOT\LicenseManager.My.MySettings\CLSID]
@="{4DA8C0C5-425F-38A6-B63A-CD1090B22B25}"

[HKEY_CLASSES_ROOT\CLSID\{4DA8C0C5-425F-38A6-B63A-CD1090B22B25}]
@="LicenseManager.My.MySettings"

[HKEY_CLASSES_ROOT\CLSID\{4DA8C0C5-425F-38A6-B63A-CD1090B22B25}\InprocServer32]
@="mscoree.dll"
"ThreadingModel"="Both"
"Class"="LicenseManager.My.MySettings"
"Assembly"="LicenseManager, Version=1.0.0.0, Culture=neutral, PublicKeyToken=null"
"RuntimeVersion"="v4.0.30319"
"CodeBase"="file:///C:/Users/MatthewB/AppData/Local/Stat Cruncher/Bin/licensemanager.dll"

[HKEY_CLASSES_ROOT\CLSID\{4DA8C0C5-425F-38A6-B63A-CD1090B22B25}\InprocServer32\1.0.0.0]
"Class"="LicenseManager.My.MySettings"
"Assembly"="LicenseManager, Version=1.0.0.0, Culture=neutral, PublicKeyToken=null"
"RuntimeVersion"="v4.0.30319"
"CodeBase"="file:///C:/Users/MatthewB/AppData/Local/Stat Cruncher/Bin/licensemanager.dll"

[HKEY_CLASSES_ROOT\CLSID\{4DA8C0C5-425F-38A6-B63A-CD1090B22B25}\ProgId]
@="LicenseManager.My.MySettings"

[HKEY_CLASSES_ROOT\CLSID\{4DA8C0C5-425F-38A6-B63A-CD1090B22B25}\Implemented Categories\{62C8FE65-4EBB-45E7-B440-6E39B2CDBF29}]

[HKEY_CLASSES_ROOT\LicenseManager.clsSharedEnums]
@="LicenseManager.clsSharedEnums"

[HKEY_CLASSES_ROOT\LicenseManager.clsSharedEnums\CLSID]
@="{E24584F3-CD27-34B7-B8B5-4986784ACEE6}"

[HKEY_CLASSES_ROOT\CLSID\{E24584F3-CD27-34B7-B8B5-4986784ACEE6}]
@="LicenseManager.clsSharedEnums"

[HKEY_CLASSES_ROOT\CLSID\{E24584F3-CD27-34B7-B8B5-4986784ACEE6}\InprocServer32]
@="mscoree.dll"
"ThreadingModel"="Both"
"Class"="LicenseManager.clsSharedEnums"
"Assembly"="LicenseManager, Version=1.0.0.0, Culture=neutral, PublicKeyToken=null"
"RuntimeVersion"="v4.0.30319"
"CodeBase"="file:///C:/Users/MatthewB/AppData/Local/Stat Cruncher/Bin/licensemanager.dll"

[HKEY_CLASSES_ROOT\CLSID\{E24584F3-CD27-34B7-B8B5-4986784ACEE6}\InprocServer32\1.0.0.0]
"Class"="LicenseManager.clsSharedEnums"
"Assembly"="LicenseManager, Version=1.0.0.0, Culture=neutral, PublicKeyToken=null"
"RuntimeVersion"="v4.0.30319"
"CodeBase"="file:///C:/Users/MatthewB/AppData/Local/Stat Cruncher/Bin/licensemanager.dll"

[HKEY_CLASSES_ROOT\CLSID\{E24584F3-CD27-34B7-B8B5-4986784ACEE6}\ProgId]
@="LicenseManager.clsSharedEnums"

[HKEY_CLASSES_ROOT\CLSID\{E24584F3-CD27-34B7-B8B5-4986784ACEE6}\Implemented Categories\{62C8FE65-4EBB-45E7-B440-6E39B2CDBF29}]

[HKEY_CLASSES_ROOT\LicenseManager.clsSharedGlobals]
@="LicenseManager.clsSharedGlobals"

[HKEY_CLASSES_ROOT\LicenseManager.clsSharedGlobals\CLSID]
@="{E86A81E1-2926-3C9D-A667-02954898E09E}"

[HKEY_CLASSES_ROOT\CLSID\{E86A81E1-2926-3C9D-A667-02954898E09E}]
@="LicenseManager.clsSharedGlobals"

[HKEY_CLASSES_ROOT\CLSID\{E86A81E1-2926-3C9D-A667-02954898E09E}\InprocServer32]
@="mscoree.dll"
"ThreadingModel"="Both"
"Class"="LicenseManager.clsSharedGlobals"
"Assembly"="LicenseManager, Version=1.0.0.0, Culture=neutral, PublicKeyToken=null"
"RuntimeVersion"="v4.0.30319"
"CodeBase"="file:///C:/Users/MatthewB/AppData/Local/Stat Cruncher/Bin/licensemanager.dll"

[HKEY_CLASSES_ROOT\CLSID\{E86A81E1-2926-3C9D-A667-02954898E09E}\InprocServer32\1.0.0.0]
"Class"="LicenseManager.clsSharedGlobals"
"Assembly"="LicenseManager, Version=1.0.0.0, Culture=neutral, PublicKeyToken=null"
"RuntimeVersion"="v4.0.30319"
"CodeBase"="file:///C:/Users/MatthewB/AppData/Local/Stat Cruncher/Bin/licensemanager.dll"

[HKEY_CLASSES_ROOT\CLSID\{E86A81E1-2926-3C9D-A667-02954898E09E}\ProgId]
@="LicenseManager.clsSharedGlobals"

[HKEY_CLASSES_ROOT\CLSID\{E86A81E1-2926-3C9D-A667-02954898E09E}\Implemented Categories\{62C8FE65-4EBB-45E7-B440-6E39B2CDBF29}]

[HKEY_CLASSES_ROOT\LicenseManager.clsSharedMethods]
@="LicenseManager.clsSharedMethods"

[HKEY_CLASSES_ROOT\LicenseManager.clsSharedMethods\CLSID]
@="{09CFD406-B291-33AC-A0CD-145760ED3428}"

[HKEY_CLASSES_ROOT\CLSID\{09CFD406-B291-33AC-A0CD-145760ED3428}]
@="LicenseManager.clsSharedMethods"

[HKEY_CLASSES_ROOT\CLSID\{09CFD406-B291-33AC-A0CD-145760ED3428}\InprocServer32]
@="mscoree.dll"
"ThreadingModel"="Both"
"Class"="LicenseManager.clsSharedMethods"
"Assembly"="LicenseManager, Version=1.0.0.0, Culture=neutral, PublicKeyToken=null"
"RuntimeVersion"="v4.0.30319"
"CodeBase"="file:///C:/Users/MatthewB/AppData/Local/Stat Cruncher/Bin/licensemanager.dll"

[HKEY_CLASSES_ROOT\CLSID\{09CFD406-B291-33AC-A0CD-145760ED3428}\InprocServer32\1.0.0.0]
"Class"="LicenseManager.clsSharedMethods"
"Assembly"="LicenseManager, Version=1.0.0.0, Culture=neutral, PublicKeyToken=null"
"RuntimeVersion"="v4.0.30319"
"CodeBase"="file:///C:/Users/MatthewB/AppData/Local/Stat Cruncher/Bin/licensemanager.dll"

[HKEY_CLASSES_ROOT\CLSID\{09CFD406-B291-33AC-A0CD-145760ED3428}\ProgId]
@="LicenseManager.clsSharedMethods"

[HKEY_CLASSES_ROOT\CLSID\{09CFD406-B291-33AC-A0CD-145760ED3428}\Implemented Categories\{62C8FE65-4EBB-45E7-B440-6E39B2CDBF29}]

[HKEY_CLASSES_ROOT\LicenseManager.clsSharedValidations]
@="LicenseManager.clsSharedValidations"

[HKEY_CLASSES_ROOT\LicenseManager.clsSharedValidations\CLSID]
@="{3992C5E2-1D50-3A99-B951-B6D2B83FF365}"

[HKEY_CLASSES_ROOT\CLSID\{3992C5E2-1D50-3A99-B951-B6D2B83FF365}]
@="LicenseManager.clsSharedValidations"

[HKEY_CLASSES_ROOT\CLSID\{3992C5E2-1D50-3A99-B951-B6D2B83FF365}\InprocServer32]
@="mscoree.dll"
"ThreadingModel"="Both"
"Class"="LicenseManager.clsSharedValidations"
"Assembly"="LicenseManager, Version=1.0.0.0, Culture=neutral, PublicKeyToken=null"
"RuntimeVersion"="v4.0.30319"
"CodeBase"="file:///C:/Users/MatthewB/AppData/Local/Stat Cruncher/Bin/licensemanager.dll"

[HKEY_CLASSES_ROOT\CLSID\{3992C5E2-1D50-3A99-B951-B6D2B83FF365}\InprocServer32\1.0.0.0]
"Class"="LicenseManager.clsSharedValidations"
"Assembly"="LicenseManager, Version=1.0.0.0, Culture=neutral, PublicKeyToken=null"
"RuntimeVersion"="v4.0.30319"
"CodeBase"="file:///C:/Users/MatthewB/AppData/Local/Stat Cruncher/Bin/licensemanager.dll"

[HKEY_CLASSES_ROOT\CLSID\{3992C5E2-1D50-3A99-B951-B6D2B83FF365}\ProgId]
@="LicenseManager.clsSharedValidations"

[HKEY_CLASSES_ROOT\CLSID\{3992C5E2-1D50-3A99-B951-B6D2B83FF365}\Implemented Categories\{62C8FE65-4EBB-45E7-B440-6E39B2CDBF29}]

[HKEY_CLASSES_ROOT\LicenseManager.clsEnums]
@="LicenseManager.clsEnums"

[HKEY_CLASSES_ROOT\LicenseManager.clsEnums\CLSID]
@="{3D8E218E-9BC7-39A1-A513-FCD7A8F3B29C}"

[HKEY_CLASSES_ROOT\CLSID\{3D8E218E-9BC7-39A1-A513-FCD7A8F3B29C}]
@="LicenseManager.clsEnums"

[HKEY_CLASSES_ROOT\CLSID\{3D8E218E-9BC7-39A1-A513-FCD7A8F3B29C}\InprocServer32]
@="mscoree.dll"
"ThreadingModel"="Both"
"Class"="LicenseManager.clsEnums"
"Assembly"="LicenseManager, Version=1.0.0.0, Culture=neutral, PublicKeyToken=null"
"RuntimeVersion"="v4.0.30319"
"CodeBase"="file:///C:/Users/MatthewB/AppData/Local/Stat Cruncher/Bin/licensemanager.dll"

[HKEY_CLASSES_ROOT\CLSID\{3D8E218E-9BC7-39A1-A513-FCD7A8F3B29C}\InprocServer32\1.0.0.0]
"Class"="LicenseManager.clsEnums"
"Assembly"="LicenseManager, Version=1.0.0.0, Culture=neutral, PublicKeyToken=null"
"RuntimeVersion"="v4.0.30319"
"CodeBase"="file:///C:/Users/MatthewB/AppData/Local/Stat Cruncher/Bin/licensemanager.dll"

[HKEY_CLASSES_ROOT\CLSID\{3D8E218E-9BC7-39A1-A513-FCD7A8F3B29C}\ProgId]
@="LicenseManager.clsEnums"

[HKEY_CLASSES_ROOT\CLSID\{3D8E218E-9BC7-39A1-A513-FCD7A8F3B29C}\Implemented Categories\{62C8FE65-4EBB-45E7-B440-6E39B2CDBF29}]

[HKEY_CLASSES_ROOT\LicenseManager.clsLM]
@="LicenseManager.clsLM"

[HKEY_CLASSES_ROOT\LicenseManager.clsLM\CLSID]
@="{D7128D56-C022-3F4A-9200-777C260C40EA}"

[HKEY_CLASSES_ROOT\CLSID\{D7128D56-C022-3F4A-9200-777C260C40EA}]
@="LicenseManager.clsLM"

[HKEY_CLASSES_ROOT\CLSID\{D7128D56-C022-3F4A-9200-777C260C40EA}\InprocServer32]
@="mscoree.dll"
"ThreadingModel"="Both"
"Class"="LicenseManager.clsLM"
"Assembly"="LicenseManager, Version=1.0.0.0, Culture=neutral, PublicKeyToken=null"
"RuntimeVersion"="v4.0.30319"
"CodeBase"="file:///C:/Users/MatthewB/AppData/Local/Stat Cruncher/Bin/licensemanager.dll"

[HKEY_CLASSES_ROOT\CLSID\{D7128D56-C022-3F4A-9200-777C260C40EA}\InprocServer32\1.0.0.0]
"Class"="LicenseManager.clsLM"
"Assembly"="LicenseManager, Version=1.0.0.0, Culture=neutral, PublicKeyToken=null"
"RuntimeVersion"="v4.0.30319"
"CodeBase"="file:///C:/Users/MatthewB/AppData/Local/Stat Cruncher/Bin/licensemanager.dll"

[HKEY_CLASSES_ROOT\CLSID\{D7128D56-C022-3F4A-9200-777C260C40EA}\ProgId]
@="LicenseManager.clsLM"

[HKEY_CLASSES_ROOT\CLSID\{D7128D56-C022-3F4A-9200-777C260C40EA}\Implemented Categories\{62C8FE65-4EBB-45E7-B440-6E39B2CDBF29}]

[HKEY_CLASSES_ROOT\LicenseManager.clsPublicTypes]
@="LicenseManager.clsPublicTypes"

[HKEY_CLASSES_ROOT\LicenseManager.clsPublicTypes\CLSID]
@="{47913F05-609A-384C-A44A-26735CCC1F57}"

[HKEY_CLASSES_ROOT\CLSID\{47913F05-609A-384C-A44A-26735CCC1F57}]
@="LicenseManager.clsPublicTypes"

[HKEY_CLASSES_ROOT\CLSID\{47913F05-609A-384C-A44A-26735CCC1F57}\InprocServer32]
@="mscoree.dll"
"ThreadingModel"="Both"
"Class"="LicenseManager.clsPublicTypes"
"Assembly"="LicenseManager, Version=1.0.0.0, Culture=neutral, PublicKeyToken=null"
"RuntimeVersion"="v4.0.30319"
"CodeBase"="file:///C:/Users/MatthewB/AppData/Local/Stat Cruncher/Bin/licensemanager.dll"

[HKEY_CLASSES_ROOT\CLSID\{47913F05-609A-384C-A44A-26735CCC1F57}\InprocServer32\1.0.0.0]
"Class"="LicenseManager.clsPublicTypes"
"Assembly"="LicenseManager, Version=1.0.0.0, Culture=neutral, PublicKeyToken=null"
"RuntimeVersion"="v4.0.30319"
"CodeBase"="file:///C:/Users/MatthewB/AppData/Local/Stat Cruncher/Bin/licensemanager.dll"

[HKEY_CLASSES_ROOT\CLSID\{47913F05-609A-384C-A44A-26735CCC1F57}\ProgId]
@="LicenseManager.clsPublicTypes"

[HKEY_CLASSES_ROOT\CLSID\{47913F05-609A-384C-A44A-26735CCC1F57}\Implemented Categories\{62C8FE65-4EBB-45E7-B440-6E39B2CDBF29}]

[HKEY_CLASSES_ROOT\LicenseManager.JSONLicense]
@="LicenseManager.JSONLicense"

[HKEY_CLASSES_ROOT\LicenseManager.JSONLicense\CLSID]
@="{E01DBF39-ED8E-3975-8ECF-BA43D3D73DFF}"

[HKEY_CLASSES_ROOT\CLSID\{E01DBF39-ED8E-3975-8ECF-BA43D3D73DFF}]
@="LicenseManager.JSONLicense"

[HKEY_CLASSES_ROOT\CLSID\{E01DBF39-ED8E-3975-8ECF-BA43D3D73DFF}\InprocServer32]
@="mscoree.dll"
"ThreadingModel"="Both"
"Class"="LicenseManager.JSONLicense"
"Assembly"="LicenseManager, Version=1.0.0.0, Culture=neutral, PublicKeyToken=null"
"RuntimeVersion"="v4.0.30319"
"CodeBase"="file:///C:/Users/MatthewB/AppData/Local/Stat Cruncher/Bin/licensemanager.dll"

[HKEY_CLASSES_ROOT\CLSID\{E01DBF39-ED8E-3975-8ECF-BA43D3D73DFF}\InprocServer32\1.0.0.0]
"Class"="LicenseManager.JSONLicense"
"Assembly"="LicenseManager, Version=1.0.0.0, Culture=neutral, PublicKeyToken=null"
"RuntimeVersion"="v4.0.30319"
"CodeBase"="file:///C:/Users/MatthewB/AppData/Local/Stat Cruncher/Bin/licensemanager.dll"

[HKEY_CLASSES_ROOT\CLSID\{E01DBF39-ED8E-3975-8ECF-BA43D3D73DFF}\ProgId]
@="LicenseManager.JSONLicense"

[HKEY_CLASSES_ROOT\CLSID\{E01DBF39-ED8E-3975-8ECF-BA43D3D73DFF}\Implemented Categories\{62C8FE65-4EBB-45E7-B440-6E39B2CDBF29}]

[HKEY_CLASSES_ROOT\Record\{46C43862-DC65-3BF1-8D9A-B315AF9FA80D}\1.0.0.0]
"Class"="LicenseManager.clsSharedEnums+enuLMForms"
"Assembly"="LicenseManager, Version=1.0.0.0, Culture=neutral, PublicKeyToken=null"
"RuntimeVersion"="v4.0.30319"
"CodeBase"="file:///C:/Users/MatthewB/AppData/Local/Stat Cruncher/Bin/licensemanager.dll"

[HKEY_CLASSES_ROOT\Record\{7DAF1AFB-548E-3A9C-B003-BBFCFEE27533}\1.0.0.0]
"Class"="LicenseManager.clsEnums+enuLicenseErrors"
"Assembly"="LicenseManager, Version=1.0.0.0, Culture=neutral, PublicKeyToken=null"
"RuntimeVersion"="v4.0.30319"
"CodeBase"="file:///C:/Users/MatthewB/AppData/Local/Stat Cruncher/Bin/licensemanager.dll"

[HKEY_CLASSES_ROOT\Record\{12C1B614-7200-38DB-A4C3-D88B23300A65}\1.0.0.0]
"Class"="LicenseManager.clsLM+enuChangeSettingsIniFile"
"Assembly"="LicenseManager, Version=1.0.0.0, Culture=neutral, PublicKeyToken=null"
"RuntimeVersion"="v4.0.30319"
"CodeBase"="file:///C:/Users/MatthewB/AppData/Local/Stat Cruncher/Bin/licensemanager.dll"

[HKEY_CLASSES_ROOT\Record\{40B82F7E-0D53-39AC-982C-3B0D058F65D9}\1.0.0.0]
"Class"="LicenseManager.clsLM+enuCertificateOverride"
"Assembly"="LicenseManager, Version=1.0.0.0, Culture=neutral, PublicKeyToken=null"
"RuntimeVersion"="v4.0.30319"
"CodeBase"="file:///C:/Users/MatthewB/AppData/Local/Stat Cruncher/Bin/licensemanager.dll"

[HKEY_CLASSES_ROOT\Record\{2AFA5EDE-930C-3023-848E-B8B58963FF24}\1.0.0.0]
"Class"="LicenseManager.clsPublicTypes+typLicenseInfo"
"Assembly"="LicenseManager, Version=1.0.0.0, Culture=neutral, PublicKeyToken=null"
"RuntimeVersion"="v4.0.30319"
"CodeBase"="file:///C:/Users/MatthewB/AppData/Local/Stat Cruncher/Bin/licensemanager.dll"```
excel vb.net com registry nsis
1个回答
0
投票

您是否在 x64 机器上运行 x32 位版本的 regasm?有两个版本,一种用于 x64 位,一种用于 x32 位。

另一方面,也许你100%避免注册该对象,并让VBA“侧面”加载.dll,这样你就不必注册,而这些天计算机被锁定的方式,那么你会要求对注册表进行零更改,并且只需要将 .dll 复制到目标计算机。因此,您不需要提升安装权限。

我想这实际上取决于一堆/许多 Excel 工作表是否需要 COM 对象,或者这只是一个 Excel 应用程序?我最好的猜测是你没有使用 regasm 32 位。

因此,x64 位可以在以下位置找到:

C:\Windows\Microsoft.NET\Framework64\v4.0.30319\RegAsm.exe

x32 位可以在以下位置找到:

C:\Windows\Microsoft.NET\Framework\v4.0.30319\RegAsm.exe

那么,在 Windows x64 位机器上运行 x32 位 Office/Excel?

然后您将使用上面的 regAsm.exe 的第二个版本

© www.soinside.com 2019 - 2024. All rights reserved.