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?

Foi útil?

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?

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