cancel
Showing results for 
Show  only  | Search instead for 
Did you mean: 
nedsram
Level 3

RegDBSetKeyValueEx and 64 bit Vista

I've had considerable problems with an InstallScript msi installation program refusing to create registry keys with 64 bit Vista. I tried running it as administrator, telling the setup to request administrator rights, and so on - all to no avail. I then added code to check the return value of RegDBSetKeyValueEx, and abort the installation if any key creation failed. This didn't result in the expected dialog box or abort, which suggests that RegDBSetKeyValueEx was returning success even though nothing was being written to the registry.

I had no such problems with 32 bit Vista, where the necessary registry keys were created as expected. Is there a known workaround for this issue, or should we just say that the installation is not compatible with the 64 bit version of Vista?

----------------

I have also had problems with Vista registry access with some applications compiled using Visual C++ 6.0. The problem was that the CRegKey MFC class used by that version was deprecated. Upgrading to Visual C++ 2009 and replacing the offending registry method calls fixed the problem - which was that requests to update the registry were silently failing with no error code returned. This sounds very familiar...
Labels (1)
0 Kudos
(3) Replies
MichaelU
Level 12 Flexeran
Level 12 Flexeran

Is it not creating the registry keys, or are the keys getting redirected to the 32-bit areas under the Wow6432Node keys?
0 Kudos
nedsram
Level 3

MichaelU wrote:
Is it not creating the registry keys, or are the keys getting redirected to the 32-bit areas under the Wow6432Node keys?

Yes Michael you are correct. Further investigation seems to indicate that the installed program is indeed picking up the registry values. Many thanks for the prompt reply.
0 Kudos
MichaelU
Level 12 Flexeran
Level 12 Flexeran

You can force the registry to not be reflected by modifying REGDB_OPTIONS (see the help), but do make sure that's the right thing to do. Since this sounds like a key for your application or COM-style registration thereof, and the app is 32-bit running on both 32 and 64-bit platforms, it probably makes sense to use the redirected location they're currently going to.
0 Kudos