Archived Forum Post

Index of archived forum posts

Question:

Version 9.5.0 GUID

Apr 13 '17 at 08:05

Hello all,

I have registered 32 and 64 bit versions of chilkat ActiveX components on Windows Server 2012 but apparently the GUID is the exact same (004CB902-F437-4D01-BD85-9E18836DA5C2) for both versions and I have problems to run my applications, if I register 64 bit version my 32 bit apps raise errors because they can't create the objects and if I register the 32 bit version then my 64 bit apps raise errors. Is there a workaround to this issue so as I can run on the same server 32 and 64 bit apps that create and use chilkat objects?

Thank you in advance.


Answer

I haven't tried it yet. But you may be able to use a Manifest file to have one of the two architectures not require the Windows Registry entries.


Answer

There's really no issue at all. Windows has separate 32-bit and 64-bit registries. A 32-bit ActiveX is registered in the 32-bit registry, and the 64-bit ActiveX is registered in the 64-bit registry.

When a 32-bit program is running, it only sees the 32-bit registry. When a 64-bit program runs, it only sees the 64-bit registry. Thus, the two can never collide and it's perfectly normal and OK for the GUID's to be the same.


Answer

For example, if you look at the registration .bat scripts that run regsvr32, you'll see that the script that registers the 32-bit DLL on a 64-bit system runs "%systemroot%\syswow64\regsvr32". This is the 32-bit regsvr32 (which is confusing because the "syswow64" makes you think 64-bit, but it's really the 32-bit version of regsvr32), whereas the script that registers the 64-bit DLL just runs "regsvr32", which is the default 64-bit regsvr32.

In the one case, regsvr32 is running as a 64-bit process and thus sees the 64-bit registry.

In the other case, syswow64\regsvr32 is running as a 32-bit process and thus sees the 32-bit registry.