Como posso fazer com que o Console de Gerenciamento Microsoft tenha alta percepção de DPI no Windows 8.1?

12

Como o Windows 8.1 não permite o suporte de alta DPI do estilo "Windows XP" em todo o sistema, como posso tornar os aplicativos do Console de Gerenciamento da Microsoft (mmc.exe) com alta DPI? Não há um item de menu de contexto "Solucionar problemas de compatibilidade".

    
por user20939 29.01.2014 / 17:27

2 respostas

17

A guia Compatibilidade está oculta para arquivos do sistema, portanto, para replicar a funcionalidade da caixa de seleção "Desativar dimensionamento de exibição em configurações de alta DPI", adicione o seguinte ao registro:

Windows Registry Editor Version 5.00

[HKEY_CURRENT_USER\Software\Microsoft\Windows NT\CurrentVersion\AppCompatFlags\Layers]
"C:\Windows\System32\mmc.exe"="~ HIGHDPIAWARE"

Isso tem a vantagem de fazer todos os snap-ins do MMC, como o Editor de Diretiva de Grupo, também usarem o dimensionamento nativo em vez da versão rasterizada borrada.

Você pode salvá-lo como arquivo .reg e importá-lo ou usar o seguinte comando na caixa de diálogo Executar:

reg add "HKCU\Software\Microsoft\Windows NT\CurrentVersion\AppCompatFlags\Layers" /v "C:\Windows\System32\mmc.exe" /f /t REG_SZ /d "~ HIGHDPIAWARE"

Se você estiver usando essa solução alternativa com frequência, convém adicioná-la no menu de contexto do botão direito para arquivos .exe. Você também pode adicioná-lo a arquivos .msi, pois a guia Compatibilidade também está ausente:

Windows Registry Editor Version 5.00

[-HKEY_CLASSES_ROOT\exefile\shell\disabledpi]

[HKEY_CLASSES_ROOT\exefile\shell\disabledpi]
@="Disable DP&I Scaling"

[HKEY_CLASSES_ROOT\exefile\shell\disabledpi\command]
@="cmd /c @reg add \"HKCU\Software\Microsoft\Windows NT\CurrentVersion\AppCompatFlags\Layers\" /v \"%1\" /f /t REG_SZ /d \"~ HIGHDPIAWARE\">nul"
"IsolatedCommand"="cmd /c @reg add \"HKCU\Software\Microsoft\Windows NT\CurrentVersion\AppCompatFlags\Layers\" /v \"%1\" /f /t REG_SZ /d \"~ HIGHDPIAWARE\">nul"

[-HKEY_CLASSES_ROOT\Msi.Package\shell\disabledpi]

[HKEY_CLASSES_ROOT\Msi.Package\shell\disabledpi]
@="Disable DP&I Scaling"

[HKEY_CLASSES_ROOT\Msi.Package\shell\disabledpi\command]
@="cmd /c @reg add \"HKCU\Software\Microsoft\Windows NT\CurrentVersion\AppCompatFlags\Layers\" /v \"%1\" /f /t REG_SZ /d \"~ HIGHDPIAWARE\">nul"
"IsolatedCommand"="cmd /c @reg add \"HKCU\Software\Microsoft\Windows NT\CurrentVersion\AppCompatFlags\Layers\" /v \"%1\" /f /t REG_SZ /d \"~ HIGHDPIAWARE\">nul"

Como as configurações "Executar como administrador" e "Desabilitar o escalonamento de DPI" são armazenadas juntas, invocar esse comando em um arquivo já definido para ser executado como administrador limpará esse sinalizador e definirá o sinalizador de ajuste de escala DPI. Isso afeta apenas os arquivos que você verificou manualmente na caixa, e não aqueles com o nívelexecutadoexecutado correto no manifesto.

Apenas para referência, quando ambos estão marcados, a string é "~ RUNASADMIN HIGHDPIAWARE", mas eu não colocaria isso em uma opção de menu de contexto já que ele já está disponível para uso único no menu de contexto e não é uma boa idéia para tornar o token de administrador necessário tão facilmente.

Se você quiser a opção de desabilitar o dimensionamento de DPI para arquivos executáveis e de instalação em uma pasta específica, poderá usar a seguinte importação de .reg:

Windows Registry Editor Version 5.00

[-HKEY_CLASSES_ROOT\Directory\shell\disabledpi]

[HKEY_CLASSES_ROOT\Directory\shell\disabledpi]
@="Disable DP&I Scaling"

[HKEY_CLASSES_ROOT\Directory\shell\disabledpi\command]
@="cmd /c @start /min cmd /c for /f \"usebackq delims=\" %%i in ('dir /b /s \"%1\*.exe\" \"%1\*.msi\"') do @reg add \"HKCU\Software\Microsoft\Windows NT\CurrentVersion\AppCompatFlags\Layers\" /v \"%%i\" /f /t REG_SZ /d \"~ HIGHDPIAWARE\""
"IsolatedCommand"="cmd /c @start /min cmd /c for /f \"usebackq delims=\" %%i in ('dir /b /s \"%1\*.exe\" \"%1\*.msi\"') do @reg add \"HKCU\Software\Microsoft\Windows NT\CurrentVersion\AppCompatFlags\Layers\" /v \"%%i\" /f /t REG_SZ /d \"~ HIGHDPIAWARE\""

Usar essa opção em uma pasta no nível raiz, como Arquivos de Programas, é uma má ideia, porque você criará centenas de entradas de registro. Mas, em alguns casos, é essencial, particularmente para o Process Explorer e o restante dos utilitários da Sysinternals, ou os utilitários da Nirsoft, que funcionam perfeitamente com o DPI Scaling desabilitado, mas não têm a opção explicitamente especificada em seus manifestos.

O último lote de código usa o comando interno start para tirar a janela do prompt de comando do caminho o mais rápido possível e mantê-lo minimizado enquanto analisa o conteúdo da pasta. O símbolo @ é usado para evitar o eco do comando na saída e o redirecionamento nulo é usado para ocultar a saída "A operação foi concluída com êxito". para cada entrada, uma vez que nunca muda.

Se você tiver a excelente ferramenta nircmd, é possível ocultar o breve flash da janela do prompt de comando:

Windows Registry Editor Version 5.00

[-HKEY_CLASSES_ROOT\exefile\shell\disabledpi]

[HKEY_CLASSES_ROOT\exefile\shell\disabledpi]
@="Disable DP&I scaling"

[HKEY_CLASSES_ROOT\exefile\shell\disabledpi\command]
@="nircmd.exe execmd reg add \"HKCU\Software\Microsoft\Windows NT\CurrentVersion\AppCompatFlags\Layers\" /v \"%1\" /f /t REG_SZ /d \"~ HIGHDPIAWARE\""
"IsolatedCommand"="nircmd.exe execmd reg add \"HKCU\Software\Microsoft\Windows NT\CurrentVersion\AppCompatFlags\Layers\" /v \"%1\" /f /t REG_SZ /d \"~ HIGHDPIAWARE\""

[-HKEY_CLASSES_ROOT\Msi.Package\shell\disabledpi]

[HKEY_CLASSES_ROOT\Msi.Package\shell\disabledpi]
@="Disable DP&I scaling"

[HKEY_CLASSES_ROOT\Msi.Package\shell\disabledpi\command]
@="nircmd.exe execmd reg add \"HKCU\Software\Microsoft\Windows NT\CurrentVersion\AppCompatFlags\Layers\" /v \"%1\" /f /t REG_SZ /d \"~ HIGHDPIAWARE\""
"IsolatedCommand"="nircmd.exe execmd @reg add \"HKCU\Software\Microsoft\Windows NT\CurrentVersion\AppCompatFlags\Layers\" /v \"%1\" /f /t REG_SZ /d \"~ HIGHDPIAWARE\""

[-HKEY_CLASSES_ROOT\Directory\shell\disabledpi]

[HKEY_CLASSES_ROOT\Directory\shell\disabledpi]
@="Disable DP&I scaling"

[HKEY_CLASSES_ROOT\Directory\shell\disabledpi\command]
@="nircmd.exe execmd for /f \"usebackq delims=\" %%i in ('dir /b /s \"%1\*.exe\" \"%1\*.msi\"') do @reg add \"HKCU\Software\Microsoft\Windows NT\CurrentVersion\AppCompatFlags\Layers\" /v \"%%i\" /f /t REG_SZ /d \"~ HIGHDPIAWARE\""
"IsolatedCommand"="nircmd.exe execmd for /f \"usebackq delims=\" %%i in ('dir /b /s \"%1\*.exe\" \"%1\*.msi\"') do @reg add \"HKCU\Software\Microsoft\Windows NT\CurrentVersion\AppCompatFlags\Layers\" /v \"%%i\" /f /t REG_SZ /d \"~ HIGHDPIAWARE\""

Se o nircmd.exe não estiver no seu caminho, você pode adicionar sua localização acima ou adicionar sua pasta ao seu caminho na caixa de diálogo Variáveis de ambiente do sistema. Para abrir essa janela, você pode usar o comando rundll32 sysdm.cpl,EditEnvironmentVariables

O argumento poderia ser feito de que seria mais elegante adicionar as chaves de registro criando um arquivo .reg em tempo de execução e importando-o silenciosamente com a opção reg import /s não documentada. Mas na minha experiência, escrever qualquer arquivo em tempo de execução gera todos os tipos de alarmes com produtos de segurança como o COMODO Internet Securita, suas versões equivalentes do Panda, Norton, etc. e qualquer coisa baseada em um modelo HIPS. Eu não vejo a necessidade de fazer isso quando o acima funciona muito bem, especialmente se você estiver usando isso em vários computadores ou compartilhá-lo e não quiser criar um alarme falso para outra pessoa.

No entanto, se você já estiver usando o nircmd, faria sentido usar o comando regsetval em vez de reg add para as extensões de shell .exe e .msi. A opção de pasta ainda precisaria fazer uma iteração na listagem de diretórios para adicionar cada entrada, para que não funcione para eles. O PowerShell e o VBScript são opções, mas sua disponibilidade depende da versão do Windows e de várias outras variáveis. Do ponto de vista da segurança, o VBScript tem a reputação de vetor de exploração, especialmente quando baixado da Internet ou compartilhado em rede, e os scripts PS1 não são executados sem definir explicitamente a política de execução do PowerShell para permitir scripts assinados remotamente.

Deixe-me saber se você notar algo estranho ao usar esse código, pois ainda é um trabalho em andamento. Dito isso, a configuração do DPI do Windows 8.1 deve ser muito mais fácil.

    
por 19.02.2014 / 10:56
2

No Windows 10, você pode conseguir o mesmo efeito:

1: Dependendo de qual build você tem (para encontrá-lo, aperte Windows + R, digite "winver", pressione Enter):

  • antes do build 15019: abra o Painel de controle, a tela, Altere o tamanho dos itens, defina um nível de escala personalizado
  • compilação 15019 ou posterior: abra Configurações, Sistema, Exibição, Ajuste personalizado

Insira o nível de escala manualmente, mesmo que esteja disponível no menu suspenso. Você saberá que fez isso corretamente se for solicitado a sair para que a configuração entre em vigor.

2: Salve o seguinte em um arquivo .reg na área de trabalho e clique duas vezes nele para adicionar o conteúdo ao seu registro:

Windows Registry Editor Version 5.00

[HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\Windows\CurrentVersion\SideBySide]
"PreferExternalManifest"=dword:00000001

3: Salve o seguinte arquivo como c:\windows\system32\mmc.exe.manifest

<?xml version="1.0" encoding="UTF-8" standalone="yes"?>
<!-- Copyright (c) Microsoft Corporation -->
<assembly xmlns="urn:schemas-microsoft-com:asm.v1"  xmlns:asmv3="urn:schemas-microsoft-com:asm.v3" manifestVersion="1.0">
<assemblyIdentity
    processorArchitecture="x86"
    version="5.1.0.0"
    name="Microsoft.Windows.MMC"
    type="win32"
/>
<description>Microsoft Management Console</description>
<trustInfo xmlns="urn:schemas-microsoft-com:asm.v3">
    <security>
        <requestedPrivileges>
            <requestedExecutionLevel
                level="highestAvailable"
                uiAccess="false"
            />
        </requestedPrivileges>
    </security>
</trustInfo>
<asmv3:application>
   <asmv3:windowsSettings xmlns="http://schemas.microsoft.com/SMI/2005/WindowsSettings">
        <dpiAware>True/PM</dpiAware>
   </asmv3:windowsSettings>
</asmv3:application>
</assembly>

4: Abra as janelas do MMC (Serviços, Gerenciador de Dispositivos, etc.) e elas agora serão maiores e mais nítidas

    
por 18.03.2017 / 17:17