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


21

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

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


11
@CodyGray - Porque estou usando um antigo IDE do compilador (do Win95); mudar para um novo induziria alguns custos para os quais não estamos preparados no momento. Se eu construí-lo e iniciá-lo a partir do IDE, tudo trava. Se eu colocar compability e iniciá-lo a partir do explorer, ele funcionará. O que é bom o suficiente para mim. Só que eu não gosto de colocar o sinalizador de compatibilidade todas as vezes após a compilação. Portanto, a questão ... :)
Rook

11
@CodyGray - Bem, eu poderia lhe contar toda a história, mas duvido que caiba na caixa de comentários aqui (ou três), então deixarei a pergunta em aberto por mais algum tempo ...
Rook

11
Ah, eu sabia que me lembrava de ter lido isso em um artigo. Finalmente encontrei e postei uma resposta para a posteridade. :-) Fique à vontade para ignorar meus incômodos, mas duvido seriamente que você encontre uma abordagem alternativa.
Cody Gray

Respostas:


29

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

No entanto, os sinalizadores compatíveis com o aplicativo são armazenados no registro (parte do usuário ou 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 obter mais detalhes sobre os sinalizadores disponíveis, consulte a postagem do blog Executando um Aplicativo como Administrador ou no Modo de Compatibilidade .


11
Hmm, isso pode (!) Funcionar ... a terceira linha "reg.exe ..." ... então, se eu configurá-lo para todos os exe que possuo em algum diretório, ele "permanecerá anexado" a esse executável mesmo se for reconstruir?
Rook

2
O comportamento normal de clicar com o botão direito do mouse em> Propriedades> Compatibilidade é definir as teclas em HKCU, a menos que o botão "Alterar configurações para todos os usuários" seja pressionado. Em seguida, é definido em HKLM para todos os usuários e não pode ser alterado através da caixa de diálogo.
Mike Brown


11

A resposta de Robert foi direta. Para expandir um pouco, e responder à pergunta do OP sobre como definir o modo em massa ...

Se você tiver uma pasta cheia de arquivos .exe para processar, faça o seguinte:

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; certifique-se de escolher o que você realmente deseja.

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

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

Adicione /fao final se você não quiser ser solicitado a confirmar.

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

Ao utilizar nosso site, você reconhece que leu e compreendeu nossa Política de Cookies e nossa Política de Privacidade.
Licensed under cc by-sa 3.0 with attribution required.