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 /s
Option 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 regsetval
Befehl anstelle der reg add
Shell-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.
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):
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:
3: Speichern Sie die folgende Datei als
c:\windows\system32\mmc.exe.manifest
4: Öffnen Sie alle MMC-Fenster (Dienste, Geräte-Manager usw.) und sie werden jetzt größer und schärfer
quelle