Come posso rendere sensibile la DPI di Microsoft Management Console in Windows 8.1?


16

Poiché Windows 8.1 non consente il supporto di DPI elevati di "Windows XP style" a livello di sistema, come è possibile rendere le DPI di Microsoft Management Console (mmc.exe) ad alto DPI? Non esiste alcuna voce di menu contestuale "Risoluzione dei problemi di compatibilità".

Risposte:


20

La scheda Compatibilità è nascosta per i file di sistema, quindi per replicare la funzionalità della casella di controllo "Disattiva ridimensionamento dello schermo su impostazioni DPI elevate", aggiungere quanto segue al registro:

Windows Registry Editor Version 5.00

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

Ciò ha l'ulteriore vantaggio di fare in modo che tutti gli snap-in MMC come l'Editor criteri di gruppo utilizzino anche il ridimensionamento nativo anziché la versione rasterizzata sfocata.

Puoi salvarlo come file .reg e importarlo, oppure utilizzare incolla il seguente comando nella finestra di dialogo Esegui:

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

Se ti ritrovi a usare questa soluzione alternativa spesso potresti volerlo aggiungere al menu contestuale del tasto destro per i file .exe. Puoi anche aggiungerlo ai file .msi poiché la scheda Compatibilità manca anche per quei file:

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"

Poiché le impostazioni "Esegui come amministratore" e "Disabilita ridimensionamento DPI" sono memorizzate insieme, invocando quel comando su un file già impostato per essere eseguito come amministratore, questo flag verrà cancellato e verrà impostato invece il flag di ridimensionamento DPI. Ciò riguarda solo i file per i quali hai spuntato manualmente la casella, non quelli con il corretto manifestExecutionLevel nel loro manifest.

Solo per riferimento, quando entrambi sono controllati la stringa è "~ RUNASADMIN HIGHDPIAWARE" ma non lo inserirei in un'opzione del menu di scelta rapida poiché è già disponibile per l'uso singolo nel menu di scelta rapida e non è una buona idea creare token amministratore necessario così facilmente.

Se si desidera l'opzione per disabilitare il ridimensionamento DPI per i file eseguibili e di installazione in una cartella specifica, è possibile utilizzare la seguente importazione .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\""

L'uso di questa opzione in una cartella a livello di root come Programmi è una cattiva idea perché creerai centinaia di voci di registro. Ma per alcuni casi è essenziale, in particolare per Process Explorer e il resto delle utility Sysinternals, o le utility Nirsoft, che funzionano alla grande con il ridimensionamento DPI disabilitato ma non hanno l'opzione esplicitamente specificata nei loro manifest.

L'ultimo batch di codice utilizza il comando di avvio interno per rimuovere la finestra del prompt dei comandi il più rapidamente possibile e tenerlo ridotto al minimo mentre analizza il contenuto della cartella. Il simbolo @ viene utilizzato per impedire l'eco del comando nell'output e il reindirizzamento nul viene utilizzato per nascondere l'output "Operazione completata correttamente". per ogni voce poiché non cambia mai.

Se ti capita di avere l'ottimo strumento nircmd puoi nascondere completamente il breve flash della finestra del prompt dei comandi:

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 nircmd.exe non si trova sul percorso, è possibile aggiungere la posizione sopra o aggiungere la cartella al percorso nella finestra di dialogo Variabili di ambiente di sistema. Per far apparire quella finestra puoi usare il comandorundll32 sysdm.cpl,EditEnvironmentVariables

Si potrebbe sostenere che sarebbe più elegante aggiungere le chiavi del Registro di sistema creando un file .reg in fase di esecuzione e importandolo silenziosamente con l' reg import /sopzione non documentata . Ma nella mia esperienza, la scrittura di qualsiasi file in fase di runtime genera ogni sorta di allarmi con prodotti di sicurezza come COMODO Internet Securita, le sue versioni equivalenti di Panda, Norton, ecc. E qualsiasi cosa basata su un modello HIPS. Non vedo la necessità di farlo quando quanto sopra funziona bene, specialmente se lo stai usando su più computer o lo condividi e non vuoi creare un falso allarme per qualcun altro.

Tuttavia, se stai già utilizzando nircmd, avrebbe senso usare il suo regsetvalcomando invece che reg addper le estensioni della shell .exe e .msi. L'opzione cartella dovrebbe comunque scorrere l'elenco delle directory per aggiungere ogni voce in modo che non funzioni per quelli. PowerShell e VBScript sono opzioni ma la loro disponibilità dipende dalla versione di Windows e da una serie di altre variabili. Dal punto di vista della sicurezza, VBScript ha la reputazione di vettore di exploit, in particolare se scaricato da Internet o condiviso su una rete, e gli script PS1 non verranno eseguiti affatto senza impostare esplicitamente la politica di esecuzione di PowerShell per consentire gli script con firma remota.

Fammi sapere se noti qualcosa di strano quando usi quel codice perché è ancora in fase di elaborazione. Detto questo, dovrebbe rendere molto più semplice la configurazione delle impostazioni DPI di Windows 8.1.


Script eccellenti !! Esattamente quello che speravo.
user20939

3
Sfortunatamente, questo non sembra aiutare sotto Windows 10. Questo metodo funziona per altre applicazioni, ma non per mmc.exe.
AnT

Per me va bene. Il file
.reg

Non funziona con Windows 10. Il riavvio non aiuta. Anche altre app come ext2fsd manager funzionano con questa correzione. L'evento mmc.exe non ha alcuna scheda di compatibilità nelle proprietà
baldrs

@baldrs Sembrava funzionare per me. Una cosa da notare è che Windows 10 fa davvero alcune cose bizzarre con il ridimensionamento dello schermo se non si utilizzano gli stessi monitor di risoluzione in un ambiente multi-display. Verificare che TUTTI i display siano impostati sulla risoluzione nativa, quindi ridimensionare su "Consigliato" o 200%. Sembra che Windows 10 non si ridimensioni internamente in modo diverso a seconda del display su cui si trova una finestra, quindi seleziona il monitor principale che posso dire. Quel monitor sembra dettare tutti gli altri ridimensionamenti. Ho un monitor per laptop 4k, 4k esterno e FullHD terzo. Il terzo monitor era sfocato fino a questo momento
Andrew T Finnell,

2

Su Windows 10 puoi ottenere lo stesso effetto facendo:

1: A seconda della build che hai (per trovarla, premi Windows + R, digita "winver", premi Invio):

  • prima della build 15019: apri Pannello di controllo, Schermo, Cambia dimensione degli elementi, imposta un livello di ridimensionamento personalizzato
  • build 15019 o successive: apri Impostazioni, Sistema, Schermo, Ridimensionamento personalizzato

Inserisci il livello di ridimensionamento manualmente, anche se è disponibile nel menu a discesa. Saprai di averlo fatto correttamente se ti viene richiesto di uscire per rendere effettive le impostazioni.

2: salvare quanto segue in un file .reg sul desktop e fare doppio clic per aggiungere i contenuti al registro:

Windows Registry Editor Version 5.00

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

3: salvare il seguente file come 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: Apri qualsiasi finestra MMC (Servizi, Gestione dispositivi, ecc.) E ora saranno più grandi e più nitide

Utilizzando il nostro sito, riconosci di aver letto e compreso le nostre Informativa sui cookie e Informativa sulla privacy.
Licensed under cc by-sa 3.0 with attribution required.