Como faço para obter o caminho verdadeiro para uma chave REG?
-
18-09-2019 - |
Pergunta
Se você estiver executando um aplicativo de 32 bits em uma máquina de 64 bits (estou usando o Windows 7) e você escreve este código
RegistryKey key = Registry.LocalMachine.OpenSubKey(@"Software\XXX")
Na verdade, ele receberá a chave de
HKEY_LOCAL_MACHINE\SOFTWARE\Wow6432Node\XXX
e não
HKEY_LOCAL_MACHINE\SOFTWARE\XXX
Programaticamente dado um RegistryKey, como faço para resolver o verdadeiro caminho no registro?
Solução
É muito o caminho verdadeiro, um aplicativo de 32 bits sempre acessará a chave do registro nessa subchave. Obter o valor que um aplicativo de 64 bits veria é tecnicamente possível, mas não com o .NET. Você terá que p/invocar regopenkeyex () et al para poder especificar o Key_wow64_64key sinalizador.
ATUALIZAÇÃO: Abordado no .NET 4.0 com o RegistryKey.openBaseKey (). O argumento do RegistryView permite especificar a visualização que você deseja. Você usaria o RegistryView.Registry64 neste caso.
Outras dicas
É uma função se o programa foi ou não compilado por janelas de 32 ou 64 bits e se está em execução em janelas de 32 ou 64 bits. Veja se abaixo ajuda:
http://social.msdn.microsoft.com/forums/en-us/netfx64bit/thread/92f962d6-7f5e-4e62-ac0a-b8b0c9f52a3