Search code examples
.netregistrywow64

How to open a WOW64 registry key from a 64-bit .NET application


My .NET application (any-CPU) needs to read a registry value created by a 32-bit program. On 64-bit Windows this goes under the Wow6432Node key in the registry. I have read that you shouldn't hard-code to the Wow6432Node, so what's the right way to access it with .NET?


Solution

  • In the case where you explicitly need to read a value written by a 32 bit program in a 64 bit program, it's OK to hard code it. Simply because there really is no other option.

    I would of course abstract it out to a helper function. For example

    public RegistryKey GetSoftwareRoot() {
      var path = 8 == IntPtr.Size 
        ? @"Software\Wow6432Node"
        : @"Software";
      return Registry.CurrentUser.OpenSubKey(path);
    }