Comment est-ce que je peux rendre le haut DPI de Microsoft Management Console sensible dans Windows 8.1?


16

Étant donné que Windows 8.1 n'autorise pas la prise en charge DPI élevée à l'échelle du système "style Windows XP", comment puis-je rendre les applications de la console de gestion Microsoft (mmc.exe) sensibles à la résolution élevée? Il n'y a aucun élément de menu contextuel «Dépanner la compatibilité» pour cela.

Réponses:


20

L'onglet Compatibilité est masqué pour les fichiers système, donc pour répliquer la fonctionnalité de la case à cocher "Désactiver la mise à l'échelle de l'affichage sur les paramètres DPI élevés", vous ajouteriez les éléments suivants au registre:

Windows Registry Editor Version 5.00

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

Cela présente l'avantage supplémentaire de faire en sorte que tous les composants logiciels enfichables MMC comme l'Éditeur de stratégie de groupe utilisent également la mise à l'échelle native au lieu de la version tramée floue.

Vous pouvez l'enregistrer en tant que fichier .reg et l'importer, ou utilisez coller la commande suivante dans la boîte de dialogue Exécuter:

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

Si vous utilisez souvent cette solution de contournement, vous pouvez l'ajouter au menu contextuel du clic droit pour les fichiers .exe. Vous pouvez également l'ajouter aux fichiers .msi car l'onglet Compatibilité est également manquant pour ces fichiers:

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"

Étant donné que les paramètres «Exécuter en tant qu'administrateur» et «Désactiver la mise à l'échelle DPI» sont stockés ensemble, l'invocation de cette commande sur un fichier déjà défini pour s'exécuter en tant qu'administrateur effacera cet indicateur et définira l'indicateur de mise à l'échelle DPI à la place. Cela n'affecte que les fichiers pour lesquels vous avez coché manuellement la case, pas ceux avec le niveau requisExecutionLevel correct dans leur manifeste.

Juste pour référence, lorsque les deux sont cochés, la chaîne est "~ RUNASADMIN HIGHDPIAWARE" mais je ne mettrais pas cela dans une option de menu contextuel car il est déjà disponible pour une utilisation unique dans le menu contextuel et ce n'est pas une bonne idée de faire le jeton administrateur nécessaire si facilement.

Si vous souhaitez désactiver l'option de mise à l'échelle DPI pour les fichiers exécutables et d'installation dans un dossier spécifique, vous pouvez utiliser l'importation .reg suivante:

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'utilisation de cette option sur un dossier de niveau racine comme Program Files est une mauvaise idée car vous allez créer des centaines d'entrées de registre. Mais dans certains cas, c'est essentiel, en particulier pour Process Explorer et le reste des utilitaires Sysinternals ou Nirsoft, qui fonctionnent tous parfaitement avec la mise à l'échelle DPI désactivée mais n'ont pas l'option explicitement spécifiée dans leurs manifestes.

Le dernier lot de code utilise la commande de démarrage interne pour retirer la fenêtre d'invite de commandes le plus rapidement possible et la minimiser lors de l'analyse du contenu du dossier. Le symbole @ est utilisé pour empêcher l'écho de la commande dans la sortie, et une redirection nulle est utilisée pour masquer la sortie «L'opération s'est terminée avec succès». pour chaque entrée car elle ne change jamais.

S'il vous arrive d'avoir l'excellent outil nircmd, vous pouvez masquer entièrement le bref flash de la fenêtre d'invite de commande:

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\""

Si nircmd.exe ne se trouve pas dans votre chemin, vous pouvez soit ajouter son emplacement au-dessus, soit ajouter son dossier à votre chemin dans la boîte de dialogue Variables d'environnement système. Pour afficher cette fenêtre, vous pouvez utiliser la commanderundll32 sysdm.cpl,EditEnvironmentVariables

L'argument pourrait être avancé qu'il serait plus élégant d'ajouter les clés de registre en créant un fichier .reg au moment de l'exécution et en l'important silencieusement avec l' reg import /soption non documentée . Mais d'après mon expérience, l'écriture de fichiers au moment de l'exécution déclenche toutes sortes d'alarmes avec des produits de sécurité comme COMODO Internet Securita, ses versions équivalentes de Panda, Norton, etc. et tout ce qui est basé sur un modèle HIPS. Je ne vois pas la nécessité de le faire lorsque cela fonctionne très bien, surtout si vous l'utilisez sur plusieurs ordinateurs ou le partagez et que vous ne voulez pas créer de fausse alarme pour quelqu'un d'autre.

Cependant, si vous utilisez déjà nircmd, il serait judicieux d'utiliser sa regsetvalcommande au lieu des reg addextensions shell .exe et .msi. L'option de dossier devra toujours parcourir la liste des répertoires pour ajouter chaque entrée afin qu'elle ne fonctionne pas pour celles-ci. PowerShell et VBScript sont des options mais leur disponibilité dépend de la version de Windows et d'une foule d'autres variables. Du point de vue de la sécurité, VBScript a la réputation d'être un vecteur d'exploitation, en particulier lorsqu'il est téléchargé à partir d'Internet ou partagé sur un réseau, et les scripts PS1 ne s'exécuteront pas du tout sans définir explicitement la politique d'exécution de PowerShell pour autoriser les scripts signés à distance.

Faites-moi savoir si vous remarquez quelque chose d'étrange lors de l'utilisation de ce code car c'est toujours un travail en cours. Cela étant dit, cela devrait faciliter la configuration des paramètres DPI de Windows 8.1.


Excellents scripts !! Exactement ce que j'espérais.
user20939

3
Malheureusement, cela ne semble pas aider sous Windows 10. Cette méthode fonctionne pour d'autres applications, mais pas pour mmc.exe.
2015

Travaille pour moi. Le fichier .reg nécessite un redémarrage dans Windows 10.
joshudson

Ne fonctionne pas avec Windows 10. Le redémarrage n'aide pas. D'autres applications comme le gestionnaire ext2fsd fonctionnent également avec ce correctif. L'événement mmc.exe n'a aucun onglet de compatibilité dans les propriétés
baldrs

@baldrs Cela a semblé fonctionner pour moi. Une chose à noter est que Windows 10 fait des choses vraiment incroyables avec la mise à l'échelle de l'affichage si vous n'utilisez pas les mêmes moniteurs de résolution dans un environnement multi-affichage. Assurez-vous que TOUS les écrans sont réglés sur la résolution native, puis mettez-le à «Recommandé» ou 200%. Il semble que Windows 10 ne sera pas mis à l'échelle en interne différemment en fonction de l'affichage d'une fenêtre, il choisit donc le moniteur principal le mieux que je puisse dire. Ce moniteur semble dicter toutes les autres échelles. J'ai un moniteur d'ordinateur portable 4k, externe 4k et FullHD tiers. Le troisième moniteur était flou jusqu'à présent
Andrew T Finnell

2

Sur Windows 10, vous pouvez obtenir le même effet en procédant comme suit:

1: Selon la version que vous avez (pour la trouver, appuyez sur Windows + R, tapez "winver", appuyez sur Entrée) soit:

  • avant la construction 15019: ouvrez le panneau de configuration, affichez, modifiez la taille des éléments, définissez un niveau de mise à l'échelle personnalisé
  • build 15019 ou version ultérieure: ouvrez Paramètres, Système, Affichage, Mise à l'échelle personnalisée

Entrez le niveau de mise à l'échelle manuellement, même s'il est disponible dans la liste déroulante. Vous saurez que vous l'avez fait correctement si vous êtes invité à vous déconnecter pour que le paramètre prenne effet.

2: Enregistrez les éléments suivants dans un fichier .reg sur votre bureau et double-cliquez dessus pour ajouter le contenu à votre registre:

Windows Registry Editor Version 5.00

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

3: Enregistrez le fichier suivant sous 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: Ouvrez toutes les fenêtres MMC (Services, Gestionnaire de périphériques, etc.) et elles seront désormais plus grandes et plus nettes

En utilisant notre site, vous reconnaissez avoir lu et compris notre politique liée aux cookies et notre politique de confidentialité.
Licensed under cc by-sa 3.0 with attribution required.