Click here to Skip to main content
14,667,169 members
Rate this:
Please Sign up or sign in to vote.
See more:
I am developing VC++ Project. It is a 32-bit application. In Prerequisites check, I am accessing some registry keys/values from this Project. My application is working fine on 32-bit machine. On 64-bit machine, prerequisities check is failing. I am trying to access a registry key under HKLM\SOFTWARE\Microsoft\Microsoft Operations Manager as below:

regKey = Registry.LocalMachine.OpenSubKey(@"SOFTWARE\Microsoft\Microsoft SQL Server\Instance Names\RS", true);

On 64-bit machine, the code is checking under HKLM\SOFTWARE\Wow6432Node\SOFTWARE\Microsoft\Microsoft SQL Server\Instance Names\RS, where the key is not present.

I tried to Disable registry redirection but with no luck. The code for Disbaling Redirection is


Type type = typeof(RegistryKey);

FieldInfo fi = type.GetField("hkey", BindingFlags.Static | BindingFlags.NonPublic | BindingFlags.Instance);

SafeHandle handle = (SafeHandle)fi.GetValue(regKey);

IntPtr realHandle = handle.DangerousGetHandle();

int errorCode = RegDisableReflectionKey(handle.DangerousGetHandle());
Posted
Comments
AAv.Soft 2-Jan-14 6:27am
   
How about Reading a 64bit registry key from 32bit app, in VB.NET?

Rate this:
Please Sign up or sign in to vote.

Solution 1

What is the value of "errorCode" when running your sample ?
   
Rate this:
Please Sign up or sign in to vote.

Solution 2

The value of errorCode is 0. It should be ERROR_SUCCESS. Please correct me if I've misunderstood anything here.
   
Rate this:
Please Sign up or sign in to vote.

Solution 3

I'm trying to find how we can do too!!
If you find something on this purpose try to write somthing here please :-D .
I call you if I fing anything!!
See you
   
Rate this:
Please Sign up or sign in to vote.

Solution 4

on Msdn website they talk about a solution!!
But for me it's not a way! They talk about make a copy of the 32 bits Node in the same place in the 64Node!! X|
I'm digging!! :doh:
   
Rate this:
Please Sign up or sign in to vote.

Solution 5

Could you please elaborate your issue more clearly. In my case, I was struggling with "Failed Install-Check because of Registry Redirection". So I did some changes in my Installer to refer correct registry under appropriate registry view. I did refer a useful MSDN article Accessing an Alternate Registry View

Thanks.
   
Rate this:
Please Sign up or sign in to vote.

Solution 6

In my case, I try to keep the value of a key.
This key comming from a 32 bits soft installation and my system is in 64 bits.
It means that when a user try to access to this key, if he is in 64bits it will not work.

My key: HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\Windows\...\InstallProperties

When I check with a VB.net program that return:
HKEY_LOCAL_MACHINE\SOFTWARE\WOW6432Node\Microsoft\Windows\...\InstallProperties
   
Comments
AAv.Soft 3-Jan-14 5:36am
   
That is my problem too.
How to READ 64bit registry key from 32bit app, in VB.NET...

This content, along with any associated source code and files, is licensed under The Code Project Open License (CPOL)




CodeProject, 503-250 Ferrand Drive Toronto Ontario, M3C 3G8 Canada +1 416-849-8900 x 100