Como construir um aplicativo compatível com x64 e Windows 7?
-
23-09-2019 - |
Pergunta
Temos um aplicativo legado que acessa o registro.Por ser um aplicativo de 32 bits ele acessa o registro do Windows 7 através da Virtualização do Registro ao fazer referência a HKEY_LOCAL_MACHINE\Software. Minha pergunta é quais configurações no Visual Studio precisamos modificar para compilar nossos aplicativos onde eles acessam o registro "normalmente" sem passar pela virtualização do registro?
Solução 3
A solução foi compilar o aplicativo legado para x64.Um aplicativo direcionado explicitamente ao x64 não estará sujeito à virtualização do registro.
Outras dicas
Se você ler de perto a página de virtualização do registro, notará que a virtualização não se limita a Windows de 64 bits. Ele afirma apenas que apenas processos de 32 bits serão virtualizados. Mas a virtualização é feita na vista de 32 e 64 bits e posterior. Portanto, o título da pergunta e a tag x64 são um pouco enganosos.
Para responder à sua pergunta, a mesma página diz o seguinte: "A virtualização do Registry está desativada para o seguinte: ... processos que solicitaram o nível de realização especificado em seus manifestos".
Assim, você pode desativar a virtualização adicionando um arquivo de manifesto ao seu executável que especifica seu nível de execução. Há pelo menos um artigo da Microsoft KB sobre como fazê -lo no Visual Studio 2005: http://support.microsoft.com/kb/944276.
Por que você não usa:
Microsoft.Win32.RegistryKey key = Microsoft.Win32.Registry.LocalMachine.OpenSubKey("Software\...");
return (string)key.GetValue("blah");
e adicione acesso ao registro no arquivo CustomTrust.Config.
Ou isso não funciona no Windows 7?