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?

Foi útil?

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

Licenciado em: CC-BY-SA com atribuição
Não afiliado a StackOverflow
scroll top