High DPI Probleme beheben (Surface Pro 4 etc.)

High DPI Probleme beheben (Surface Pro 4 etc.)

Wer sich in letzter Zeit ein Windows-10-Gerät mit hoher Pixeldichte (also hoher Auflösung auf geringer Bildschirmgröße) gekauft hat, der wird das Problem kennen: einige Anwendungen sind darauf quasi unbedienbar! Der Grund ist, dass sie auf diesen High-DPI-Displays nicht vernünftig mitskalieren, was sich in viel zu kleinen Dialogen und Schriftgrößen bemerkbar macht. Nehmen wir z.B. paint.net:

paint.net High DPI - maaaeh

Dialoge sind nur mit der Bildschirmlupe lesbar, da die Schriftgröße so extrem klein ist. Bei mir ist dies auf meinem neuen Surface Pro 4 der Fall, das eine Auflösung von 2736×1824 px auf 12,3″ Bildschirmdiagonale besitzt. Doch auch auf anderen High-DPI-Geräten ist dieses Problem identisch. Bei einem solchen Darstellungsverhalten nützt dann auch das schärfste Display nichts…

Dabei gibt es durchaus auch Anwendungen, die wunderbar skalieren: Visual Studio 2015 zum Beispiel. Doch als Endanwender will man natürlich, dass alles reibungsfrei funktioniert und derzeit ist das einfach noch ein großes Dilemma… auch für Entwickler, wenn man sich die „Skalierung“ des SQL Server Management Studio 2014 (SSMS) anschaut:

SSMS High DPI - maaaeh

Auch hier ist der Dialog so klein, dass er sich ohne Bildschirmlupe nicht bedienen lässt. Windows 10 ist zwar bereits um Welten besser geworden, was die Skalierung von Anwendungen anbelangt, es gibt jedoch noch jede Menge Probleme mit Anwendungen, die nicht auf High DPI ausgelegt sind. Mit Windows-Standardeinstellungen ist das Skalierungsproblem bei diesen Anwendungen leider nicht lösbar. Weder die Windows-weite Skalierungsstufe noch die Aktivierung/Deaktivierung der Skalierung bei hohem DPI-Wert für die Anwendung bringen einen Erfolg.

Zum Glück ist das Problem lösbar – wenn es auch zwei manuelle Schritte erfordert! Wie das geht, steht hier. Technische Grundlage dafür ist das sogenannte „Bitmap Scaling“, welches Anwendungen pixelweise 1:1 in ihrem vorgefertigten Layout hochskaliert, anstatt zu versuchen die grafischen Komponenten einzeln zu skalieren (DPI Scaling).

Um für eine Anwendung das Bitmap Scaling zu aktivieren, sind folgende Schritte erforderlich:

  1. Registry anpassen (einmalig):
    Unter dem Bezeichner HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\Windows\CurrentVersion\SideBySide ist ein DWORD-Schlüssel PreferExternalManifest mit dem Wert 1 anzulegen:

    [HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\Windows\CurrentVersion\SideBySide]
    "PreferExternalManifest"=dword:00000001
  2. Manifest-Datei anlegen (pro Anwendung):
    Für die jeweilige Anwendung ist im Installationsverzeichnis parallel zur <Anwendung>.exe eine Datei <Anwendung>.exe.manifest mit folgendem Inhalt anzulegen, wodurch das DPI Scaling deaktiviert wird (was wiederum das Bitmap Scaling aktiviert):

    <?xml version="1.0" encoding="UTF-8" standalone="yes"?>
    
    <assembly xmlns="urn:schemas-microsoft-com:asm.v1" manifestVersion="1.0" xmlns:asmv3="urn:schemas-microsoft-com:asm.v3">
    
    <dependency>
      <dependentAssembly>
        <assemblyIdentity type="win32" name="Microsoft.Windows.Common-Controls" version="6.0.0.0" processorArchitecture="*" publicKeyToken="6595b64144ccf1df" language="*">
        </assemblyIdentity>
      </dependentAssembly>
    </dependency>
    
    <dependency>
      <dependentAssembly>
        <assemblyIdentity type="win32" name="Microsoft.VC90.CRT" version="9.0.21022.8" processorArchitecture="amd64" publicKeyToken="1fc8b3b9a1e18e3b">
        </assemblyIdentity>
      </dependentAssembly>
    </dependency>
    
    <trustInfo xmlns="urn:schemas-microsoft-com:asm.v3">
      <security>
        <requestedPrivileges>
          <requestedExecutionLevel level="asInvoker" uiAccess="false"/>
        </requestedPrivileges>
      </security>
    </trustInfo>
    
    <asmv3:application>
      <asmv3:windowsSettings xmlns="http://schemas.microsoft.com/SMI/2005/WindowsSettings">
        <ms_windowsSettings:dpiAware xmlns:ms_windowsSettings="http://schemas.microsoft.com/SMI/2005/WindowsSettings">false</ms_windowsSettings:dpiAware>
      </asmv3:windowsSettings>
    </asmv3:application>
    
    </assembly>

Das Ergebnis für paint.net und SSMS? Ordentlich skalierte Anwendungen mit lesbaren Dialogen:

paint.net High DPI - fixed

SSMS High DPI - fixed

 

Ich bin freiberuflicher Senior Full-Stack Web-Entwickler (Angular, TypeScript, C#/.NET) im Raum Frankfurt/Main. Mit Leidenschaft für Software-Design, Clean Code, moderne Technologien und agile Vorgehensmodelle.

18 Kommentare

  1. Pierre Louis 9 Jahren vor

    Funktioniert leider nicht mit LOGO Soft Comfort V8.0 auf meinem Surface Pro 4 🙁

    • Autor

      Ja, leider gibt es Anwendungen, die das nicht erlauben. WISO Steuer-Sparbuch ist auch so ein Kandidat. Hier kann man evtl. in den Anwendungs-Optionen noch die Skalierung einstellen.

    • Andi 7 Jahren vor

      bei mir auf meinem SurfaceBook auch nicht….

    • Jamie 7 Jahren vor

      Navigate to LOGOComfort.exe in your C: drive, right click and select properties/compatibility, tick the box ‚override high DPI scaling behavior. Scaling performed by‘ and select ’system‘ in the drop down box. click ‚Apply‘ and open LOGOComfort soft.

  2. Carsten Zwenzner 8 Jahren vor

    Vielen Dank, der Binreader und VLC funktionieren einwandfrei. War schon am überlegen das SP4 wieder zurück zu schicken.

  3. Karsten 8 Jahren vor

    Hallo, klappt recht gut, vielen Dank (MS Surface Pro 4):

    IBM Notes interessiert es leider nicht, gerade da ist es aber für unsere Nutzer das größte Problem. Jemand hier eine Idee?

  4. Barton 8 Jahren vor

    danke für den Post, allerdings gibt es in meiner Registry keinen „Side by Side“ Ordner. Irgendwelche Idee? 🙁

    • Mark 8 Jahren vor

      Hm, evtl. den „SideBySide“-Key manuell erstellen? Einen Versuch ist es wert…
      Welche Windows-Version hast du denn (Win 10 Home, Pro, …)?

      • Barton 8 Jahren vor

        Windows 10 home, ich probiere heute Abend mal den key manuell einzustellen.

  5. Alfred 8 Jahren vor

    Hallo,
    funktioniert leider mit Photoshop Elements 9 unter Win 10 Pro nicht (Surface Pro 4) … was mach ich falsch ?? Anwendung wird mit Fehler gestartet, wenn ich o.st. Anleitung befolge.
    lg
    A

  6. A.Schirmer 8 Jahren vor

    Hallo, aktuell ist das Anniversery Update installiert (Vorher leider nicht getestet) Surface Pro 4 und es kommt die Fehlermeldung:

    Der Datenträger einer Datei wurde extern so geändert, dass die geöffnete Datei nicht mehr gültig ist. (Kommt nur, wenn die manifest Datei im Installationspfad liegt)
    Eine Idee wie man das lösen kann klingt ja prinzipiell nur nach einer Sicherheitsfunktion von W10.

    • Sing 8 Jahren vor

      Vor diesem Problem stehen wir auch. Gibt es eine Lösung?

  7. Oil 7 Jahren vor

    Sehr cool! Danke für den Tipp 🙂

  8. d.s. 7 Jahren vor

    Hallo,
    es gibt in Windows 10 in den Eigenschaften der Programme (*.exe) unter Kompatibilität einen neuen Eintrag „Verhalten bei hoher DPI-Skalierung überschreiben“. (Keine Ahnung seit wann oder mit welchem Update der aufgetaucht ist.

    Hab das für die Java.exe aktiviert und Skalierung für System durchführen angewählt.

    Jetzt kann ich endlich alle Javaanwendungen auf meinem 15Zoll UHD Display wieder verwenden.

  9. Andreas P. 7 Jahren vor

    So danke an Matthias Jauernig und Jamie (hier aus den Komentaren) ich habe es bei LOGO!Soft Comfort so gemacht das ich ersteinmal die Anleitung von Matthias Jauernig genutzt habe und danch bei der LOGOComfort.exe „Rechts klick“ dann auf „Eigenschaften“ Reiter „Kompatibilität“ dann Hacken bei „Verhalten bei hoher DPI-Skalierung überschreiben. Skalierung durchgeführt von:“ und System ausgewählt. Siehe da bei meinem Surface 4 Pro kann ich jetzt auch endlich LOGO!Soft Comfort nutzen. Vielen dank für die Anleitung

Pingbacks

  1. […] I managed to solve it following these instructions: Link. […]

Eine Antwort hinterlassen

Deine E-Mail-Adresse wird nicht veröffentlicht. Erforderliche Felder sind mit * markiert

*

Diese Website verwendet Akismet, um Spam zu reduzieren. Erfahre mehr darüber, wie deine Kommentardaten verarbeitet werden.