64 bit apps and the Registry wow6432node

The solution to this problem https://forum.xojo.com/36244-htmlviewer-renders-a-website-incorrectly involved setting a registry key in a different path when running in 64 bits:

HKEY_CURRENT_USER\\SOFTWARE\\wow6432node\\Microsoft

instead of

HKEY_CURRENT_USER\\SOFTWARE\\Microsoft

https://msdn.microsoft.com/en-us/library/windows/desktop/ms724072(v=vs.85).aspx suggests that the OS will do registry redirection and reflection transparently, so I’m wondering why we needed to do this workaround. Is Xojo doing something wrong?

I’m not sure why you are getting it to work via wow6432node, on my machine no amount of changing things lets IE pick up the settings from there when running a 64bit app. It should only be picking up from there if IE is running in 32bit.

For me in 64bit this code doesn’t work:

reg.Value(App.ExecutableFile.Name) = 11000 // &h2af8

That doesn’t work in a 64bit app beacause the registry key is created as a QWORD. As is mentioned here you must use a DWORD.

All you need to do is cast the value to an Int32, then when the registry entry is created it creates a DWORD not a QWORD which is working on my computer here.

reg.Value(App.ExecutableFile.Name) = CType(11000, Int32) // &h2af8

I’m not sure why saving it into HKEY_CURRENT_USER\SOFTWARE\wow6432node\Microsoft works for some of you, but it doesn’t work for me. This topic looks like it might need a little bit more testing as I’m guessing that some of the platforms out there are letting IE run in 32bit inside a 64bit app, at least that’s what it sounds like from the post by Chris on the forum post you linked.

The game is afoot!

Julian, I think you are correct and that it’s the DWORD vs QWORD that was the problem, not the /wow6432node/.

Testing this is tricky because if you test the 32 bit app first, it sets the DWORD key, and then when you test the 64 bit app it sets the improper QWORD in /wow6432node/ - but, since the /wow6432node/ is basically ignored, the 64 bit app works. But it’s only working because of the prior test with the 32 bit app.

I’ve run this test a couple of times now and I’m pretty sure that your solution works.

Anyone out there testing this: be sure to manually clear out the old keys using RegEdit between test runs, otherwise you are likely to be confused.

I added a feature request regarding this: <https://xojo.com/issue/52277>