Wie kann ich Microsoft Management Console für hohe DPI-Werte in Windows 8.1 aktivieren?


15

Wie kann ich die Microsoft Management Console-Apps (mmc.exe) für hohe DPI-Werte aktivieren, da Windows 8.1 keine systemweite Unterstützung für hohe DPI-Werte im Windows XP-Stil zulässt? Es gibt keinen Kontextmenüeintrag "Fehlerbehebung bei Kompatibilität".

Antworten:


19

Die Registerkarte "Kompatibilität" ist für Systemdateien ausgeblendet. Um die Funktionalität des Kontrollkästchens "Anzeigeskalierung bei hohen DPI-Einstellungen deaktivieren" zu replizieren, fügen Sie der Registrierung Folgendes hinzu:

Windows Registry Editor Version 5.00

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

Dies hat den zusätzlichen Vorteil, dass alle MMC-Snap-Ins wie der Gruppenrichtlinien-Editor anstelle der verschwommenen gerasterten Version auch die native Skalierung verwenden.

Sie können diese als .reg-Datei speichern und importieren oder den folgenden Befehl in das Dialogfeld "Ausführen" einfügen:

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

Wenn Sie diese Problemumgehung häufig verwenden, möchten Sie sie möglicherweise dem Kontextmenü für EXE-Dateien mit der rechten Maustaste hinzufügen. Sie können es auch zu MSI-Dateien hinzufügen, da die Registerkarte "Kompatibilität" auch für diese Dateien fehlt:

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"

Da die Einstellungen "Als Administrator ausführen" und "DPI-Skalierung deaktivieren" zusammen gespeichert sind, wird beim Aufrufen dieses Befehls für eine Datei, die bereits als Administrator ausgeführt wird, dieses Flag gelöscht und stattdessen das DPI-Skalierungsflag gesetzt. Dies betrifft nur Dateien, für die Sie das Kontrollkästchen manuell aktiviert haben, nicht diejenigen mit dem richtigen angeforderten Ausführungsebenen in ihrem Manifest.

Nur als Referenz, wenn beide markiert sind, lautet der String "~ RUNASADMIN HIGHDPIAWARE", aber ich würde das nicht in eine Kontextmenüoption einfügen, da es bereits für die einmalige Verwendung im Kontextmenü verfügbar ist und es keine gute Idee ist, das zu machen Administrator-Token so einfach nötig.

Wenn Sie die DPI-Skalierung für ausführbare Dateien und Installationsdateien in einem bestimmten Ordner deaktivieren möchten, können Sie den folgenden .reg-Import verwenden:

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

Die Verwendung dieser Option für einen Ordner auf Stammebene wie Programme ist eine schlechte Idee, da Sie Hunderte von Registrierungseinträgen erstellen werden. In einigen Fällen ist dies jedoch von entscheidender Bedeutung, insbesondere für Process Explorer und die übrigen Sysinternals-Dienstprogramme oder die Nirsoft-Dienstprogramme, die bei deaktivierter DPI-Skalierung alle einwandfrei funktionieren, in ihren Manifesten jedoch nicht die explizit angegebene Option aufweisen.

Der letzte Codestapel verwendet den internen Startbefehl, um das Eingabeaufforderungsfenster so schnell wie möglich aus dem Weg zu räumen und es so klein wie möglich zu halten, während der Inhalt des Ordners analysiert wird. Das @ -Symbol wird verwendet, um zu verhindern, dass der Befehl in der Ausgabe zurückgesendet wird, und keine Umleitung wird verwendet, um die Ausgabe "Der Vorgang wurde erfolgreich abgeschlossen" auszublenden. für jeden Eintrag, da es sich nie ändert.

Wenn Sie zufällig über das hervorragende Tool nircmd verfügen, können Sie das kurze Blinken des Befehlszeilenfensters vollständig ausblenden:

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

Befindet sich nircmd.exe nicht in Ihrem Pfad, können Sie entweder den Speicherort darüber oder den Ordner im Dialogfeld "Systemumgebungsvariablen" zu Ihrem Pfad hinzufügen. Um dieses Fenster aufzurufen, können Sie den Befehl verwendenrundll32 sysdm.cpl,EditEnvironmentVariables

Es könnte argumentiert werden, dass es eleganter wäre, die Registrierungsschlüssel hinzuzufügen, indem zur Laufzeit eine REG-Datei erstellt und mit der undokumentierten reg import /sOption unbemerkt importiert wird . Meiner Erfahrung nach löst das Schreiben von Dateien zur Laufzeit mit Sicherheitsprodukten wie COMODO Internet Securita, den entsprechenden Versionen von Panda, Norton usw. und allem, was auf einem HIPS-Modell basiert, alle Arten von Alarmen aus. Ich sehe keine Notwendigkeit, dies zu tun, wenn das oben Genannte einwandfrei funktioniert, insbesondere wenn Sie dies auf mehreren Computern verwenden oder gemeinsam nutzen und keinen falschen Alarm für eine andere Person erstellen möchten.

Wenn Sie jedoch bereits nircmd verwenden, ist es sinnvoll, den regsetvalBefehl anstelle der reg addShell-Erweiterungen .exe und .msi zu verwenden. Die Ordneroption müsste immer noch über die Verzeichnisliste iterieren, um jeden Eintrag hinzuzufügen, damit dies für diese nicht funktioniert. PowerShell und VBScript sind Optionen, ihre Verfügbarkeit hängt jedoch von der Windows-Version und einer Vielzahl anderer Variablen ab. Unter Sicherheitsaspekten gilt VBScript als Exploit-Vektor, insbesondere wenn es aus dem Internet heruntergeladen oder in einem Netzwerk freigegeben wird. PS1-Skripts werden überhaupt nicht ausgeführt, ohne die Ausführungsrichtlinie von PowerShell explizit so festzulegen, dass remote signierte Skripts zulässig sind.

Lassen Sie mich wissen, wenn Sie bei der Verwendung dieses Codes etwas Merkwürdiges bemerken, da dieser noch in Bearbeitung ist. Abgesehen davon sollte es die Konfiguration der DPI-Einstellungen von Windows 8.1 erheblich erleichtern.


Hervorragende Skripte !! Genau das, was ich mir erhofft hatte.
user20939

3
Leider scheint dies unter Windows 10 nicht zu helfen. Diese Methode funktioniert für andere Anwendungen, jedoch nicht für mmc.exe.
Am

Funktioniert bei mir. Die .reg-Datei erfordert einen Neustart unter Windows 10.
Joshudson

Funktioniert nicht mit Windows 10. Neustart hilft nicht. Auch andere Apps wie der ext2fsd-Manager arbeiten mit diesem Fix. Das Ereignis mmc.exe hat keine Registerkarte "Kompatibilität" in den Eigenschaften
Baldrs

@baldrs Das schien für mich zu funktionieren. Zu beachten ist, dass Windows 10 bei der Anzeigeskalierung einige wirklich bizzare Dinge tut, wenn Sie in einer Umgebung mit mehreren Bildschirmen nicht die gleichen Auflösungsmonitore verwenden. Stellen Sie sicher, dass ALLE Anzeigen auf native Auflösung eingestellt sind, und skalieren Sie dann auf 'Empfohlen' oder 200%. Es sieht so aus, als würde Windows 10 intern nicht anders skaliert, je nachdem, auf welchem ​​Bildschirm ein Fenster angezeigt wird. Dieser Monitor scheint alle anderen Skalierungen zu diktieren. Ich habe einen 4k Laptop Monitor, 4k extern und FullHD dritter. Der dritte Monitor war bis dahin unscharf
Andrew T Finnell

2

Unter Windows 10 können Sie den gleichen Effekt erzielen, indem Sie folgende Schritte ausführen:

1: Abhängig von Ihrem Build (drücken Sie Windows + R, geben Sie "winver" ein und drücken Sie die Eingabetaste):

  • vor Build 15019: Öffnen Sie Systemsteuerung, Anzeige, Größe der Elemente ändern, und legen Sie eine benutzerdefinierte Skalierungsstufe fest
  • Build 15019 oder höher: Öffnen Sie Einstellungen, System, Anzeige, Benutzerdefinierte Skalierung

Geben Sie die Skalierungsstufe manuell ein, auch wenn diese in der Dropdown-Liste verfügbar ist. Sie wissen, dass Sie es richtig gemacht haben, wenn Sie aufgefordert werden, sich abzumelden, damit die Einstellung wirksam wird.

2: Speichern Sie Folgendes in einer .reg-Datei auf Ihrem Desktop und doppelklicken Sie darauf, um den Inhalt Ihrer Registrierung hinzuzufügen:

Windows Registry Editor Version 5.00

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

3: Speichern Sie die folgende Datei als 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: Öffnen Sie alle MMC-Fenster (Dienste, Geräte-Manager usw.) und sie werden jetzt größer und schärfer

Durch die Nutzung unserer Website bestätigen Sie, dass Sie unsere Cookie-Richtlinie und Datenschutzrichtlinie gelesen und verstanden haben.
Licensed under cc by-sa 3.0 with attribution required.