Como definir opções de compatibilidade para executáveis através do Registro do Windows

Existem programas que requerem permissões administrativas para serem executadas. Caso a instalação ocorra somente em um computador, tudo que precisamos fazer é marcar a caixa Executar este programa como administrador na aba Compatibilidade nas Propriedades do arquivo executável (botão direito).

Mas em um ambiente onde o mesmo programa precisa ser instalado em 30 máquinas, realizar este processo em cada uma pode ser cansativo e demorado. Podemos automatizar este processo tanto para o usuário atual quanto a nível de sistema (para todos os usuários).

Ao marcarmos Executar este programa como administrador, o Windows define uma simples chave de registro para informar ao sistema que o programa deve ser executado em:

HKEY_CURRENT_USER\Software\Microsoft\Windows NT\CurrentVersion\AppCompatFlags\Layers

Podemos defini-la a nível de sistema em:

HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\Windows NT\CurrentVersion\AppCompatFlags\Layers

O nome da chave é o caminho completo do executável (C:\Program Files\MyApp\Test.exe) e o valor da chave pode conter tanto o Modo de compatibilidade quanto o Nível de Privilégio.

Modos de Compatibilidade

Modo Descrição
WIN95 Windows 95
WIN98 Windows 98
WIN4SP5 Windows NT 4.0 SP5
WIN2000 Windows 2000
WINXPSP2 Windows XP SP2
WINXPSP3 Windows XP SP3
VISTARTM Vista
VISTASP1 Vista SP1
VISTASP2 Vista SP2
WIN7RTM Windows 7
WINSRV03SP1 Windows Server 2003 SP1
WINSRV08SP1 Windows Server 2008 SP1

Nível de privilégio

RUNASADMIN Executar este programa como administrador

Exemplo

Para definirmos modo de compatibilidade para Windows XP SP3 e nível de privilégio administrativo, podemos gravar a seguinte chave no registro:

REG ADD “HKLM\SOFTWARE\Microsoft\Windows NT\CurrentVersion\AppCompatFlags\Layers” /v “C:\temp\compatmodel\iconsext.exe” /t REG_SZ /d “WINXPSP3 RUNASADMIN” /f

Lembrando que tanto o modo de compatibilidade (WINXPSP3) e nível de privilégio (RUNASADMIN) não dependem um do outro. Por exemplo: É possível executar um programa somente no modo Windows XP SP3 no contexto do usuário atual ou apenas executar um programa com privilégios administrativos. Não precisamos necessariamente definir o modo de compatibilidade e nível de privilégio juntos. Podemos usar um ou outro separadamente ou juntos.

Referências

Windows – How to set “Run this program as an administrator” programatically – http://stackoverflow.com/questions/2313045/how-to-set-run-this-program-as-an-administrator-programatically

Anúncios

Deixe um comentário

Preencha os seus dados abaixo ou clique em um ícone para log in:

Logotipo do WordPress.com

Você está comentando utilizando sua conta WordPress.com. Sair / Alterar )

Imagem do Twitter

Você está comentando utilizando sua conta Twitter. Sair / Alterar )

Foto do Facebook

Você está comentando utilizando sua conta Facebook. Sair / Alterar )

Foto do Google+

Você está comentando utilizando sua conta Google+. Sair / Alterar )

Conectando a %s