Search code examples
excelvb.netcomregistrynsis

Registering COM Object on Windows 64-bit For Use In Excel-32 Bit Is Failing


I have an Excel application that uses a COM object.

The COM object is VB.net and compiled in Visual Studio targeted to "Any CPU".

I am registering the COM object for the current user only. My NSIS installer does the following:

  1. NSIS runs Regasm and outputs a reg file.

  2. NSIS replaces all instances of "[HKEY_CLASSES_ROOT" with "[HKEY_CURRENT_USER\Software\Classes" in the reg file.

  3. NSIS executes the reg file and all the appropriate registry entries are created.

This works fine on:

Windows 10 64-bit / Excel 64-bit

Windows 10 32-bit / Excel 32-bit

However, I am hitting an error with:

Windows 10 64-bit / Excel 32-bit

For Windows 10 64-bit / Excel 32-bit my understanding is I must replace "[HKEY_CLASSES_ROOT" with "[HKEY_CURRENT_USER\SOFTWARE\Classes\WOW6432Node"

I am doing this in NSIS but Excel 32-bit is raising the error "Cannot create ActiveX component."

I tried replacing "[HKEY_CLASSES_ROOT" with "[HKEY_CURRENT_USER\SOFTWARE\Classes" but then Excel raises the error "Class not registered."

If I change the reg file to simply use "[HKEY_CLASSES_ROOT" (and forget about the registering for the current user) Excel 32-bit can the instantiate the COM object fine.

The problem is I want to register the COM object for the current user only.

What registry path should I be using that will be for the current user but Excel 32-bit on a Windows 64-bit can instantiate it?

Here is the reg file that is failing where "[HKEY_CLASSES_ROOT" has been replaced with "[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"

And here is the reg file that registers to [HKEY_CLASSES_ROOT] for all users. Strangely, if I do TWO reg file imports:

  1. A reg file import to [HKEY_CURRENT_USER\SOFTWARE\Classes\WOW6432Node

and

  1. A second reg file import to "[HKEY_CLASSES_ROOT"

then the COM objects are able to instantiate on Windows 64-bit in Excel 32-bit.

I have to import both to "[HKEY_CLASSES_ROOT" and "[HKEY_CURRENT_USER\SOFTWARE\Classes\WOW6432Node" for it to work.

I need to understand what is going on here and what the correct approach is.

Here is the reg file that imports to "[HKEY_CLASSES_ROOT":


[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"```

Solution

  • I tried Albert's suggestion of making sure my NSIS installer was using RegAsm.exe in the 64-bit path at:

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

    However, I compared the reg file created by the 64-bit RegAsm to the reg file created by the 32-bit Regasm and they were identical.

    I then realized that on Windows 64-bit registering a COM object for Excel-32 bit that I had to make sure the reg file was imported into the 32-bit view of the registry and not the 64-bit view.

    I accomplished this by using the following command in my NSIS installer:

    SetRegView 32

    This did the trick and the COM object was now recognized by Excel 32-bit.