registro net leer escribir .net registry wow64

leer - Cómo abrir una clave de registro WOW64 desde una aplicación.NET de 64 bits



leer registro vb net (4)

En el caso de que necesite leer explícitamente un valor escrito por un programa de 32 bits en un programa de 64 bits, está bien codificarlo. Simplemente porque realmente no hay otra opción.

Por supuesto, lo abstendré a una función auxiliar. Por ejemplo

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

Mi aplicación .NET (cualquier CPU) necesita leer un valor de registro creado por un programa de 32 bits. En Windows de 64 bits, esto va bajo la clave Wow6432Node en el registro. He leído que no debería codificar el Wow6432Node, ¿cuál es la forma correcta de acceder a él con .NET?



La forma correcta sería llamar a la API del registro nativo y pasar el indicador KEY_WOW64_32KEY a RegOpenKeyEx / RegCreateKeyEx


Si puede cambiar la versión .Net de destino a v4, entonces puede usar la nueva función OpenBaseKey, por ejemplo

RegistryKey registryKey; if (Environment.Is64BitOperatingSystem == true) { registryKey = RegistryKey.OpenBaseKey(Microsoft.Win32.RegistryHive.LocalMachine, RegistryView.Registry64); } else { registryKey = RegistryKey.OpenBaseKey(Microsoft.Win32.RegistryHive.LocalMachine, RegistryView.Registry32); }