Writing to 64-bit registry from 32-bit installer

Travesty3 picture Travesty3 · Mar 19, 2012 · Viewed 11.8k times · Source

I have a 32-bit application and a 32-bit installer, written in Wise Installation Studio. I know...I shouldn't be using Wise and I should switch to something else. But for now, I'm stuck with it.

Our application is graphics-intensive and to improve performance, we want it to disable desktop composition (Windows Aero) while running. We accomplished this on 32-bit systems by adding a registry entry at:

HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\Windows NT\CurrentVersion\AppCompatFlags\Layers

with a value of DISABLEDWM.

This sets the "Disable desktop composition" checkbox in the compatibility tab of the properties for our EXE to be checked by default.

This works perfectly on 32-bit systems, but when running the installer on a 64-bit system, Windows redirects the creation of registry entries to HKLM\SOFTWARE\Wow6432Node, and the flag is not set correctly. If I manually create an entry in the 64-bit registry view, then it works.

So how can I force this registry key to be created in the 64-bit registry view from our 32-bit installer? Or is there a better way to set this property aside from creating a registry entry?

Answer

Joachim Isaksson picture Joachim Isaksson · Mar 19, 2012

I'm not sure what possibilities Wise gives you regarding scripting, but the way to access the 64-bit registry from a regular program is to use KEY_WOW64_64KEY when manipulating the registry.

If it's a possibility to at the least run an external EXE file from the setup, it should solve your problem.