Como posso definir o modo de compatibilidade para um executável na linha de comando?

20

Existe uma maneira de definir a compatibilidade do com a opção XP (clique direito / propriedades / compatibilidade ... esse, sim :) para um executável a partir do comando linha?

Ou melhor ainda, existe uma maneira de definir a compatibilidade com um diretório inteiro (executáveis no diretório), de modo que cada executável compilado / compilado já tenha esse "sinalizador"?

    
por Rook 13.01.2012 / 03:11

3 respostas

25

Não conheço ferramentas que permitam definir ou alterar os sinalizadores de compatibilidade de aplicativos.

No entanto, os flags compatíveis com o aplicativo são armazenados no registro (usuário ou parte do sistema):

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

Portanto, você pode usar o editor de registro de linha de comando padrão para criar a entrada necessária:

reg.exe Add "HKLM\Software\Microsoft\Windows NT\CurrentVersion\AppCompatFlags\Layers" /v "C:\Program Files\MyApp\Test.exe" /d "WINXPSP3"

Para mais detalhes sobre as bandeiras disponíveis, veja o post no blog Executando um aplicativo como administrador ou no modo de compatibilidade .

    
por 17.01.2012 / 14:54
16
por 30.12.2013 / 22:14
10

A resposta de Robert foi nítida. Para expandir um pouco e responder a pergunta do OP sobre configurar o modo em massa ...

Se você tem uma pasta cheia de arquivos .exe para processar, você pode fazer isso:

for %x in ("*.exe") do reg.exe Add "HKCU\Software\Microsoft\Windows NT\CurrentVersion\AppCompatFlags\Layers" /v "%~fx" /d "WINXPSP3"

Este exemplo usa HKCU em vez de HKLM; não se esqueça de escolher o que você realmente quer.

Para remover as configurações, com um aviso de confirmação para cada uma delas:

for %x in ("*.exe") do reg.exe Delete "HKCU\Software\Microsoft\Windows NT\CurrentVersion\AppCompatFlags\Layers" /v "%~fx"

Adicione /f ao final se não quiser ser solicitado a confirmar.

(Se você votar esta resposta, por favor vote no de Robert também!)

    
por 22.01.2013 / 08:32