Until java 9 (which should have full support for high dpi screens) a tweak must be done on the client system that runs the SmartClient, what works for now is forcing first windows to use an external manifest:
Press Windows Logo key + R to open a Run. Type in regedit and press Enter.
In the left pane of the Registry Editor, navigate to the following directory:
HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\Windows\CurrentVersion
Click on SideBySide in the left pane to expand its contents in the right pane. Right-click on an empty space in the right pane, hover over New and click on DWORD (32-bit) value.
Name the file PreferExternalManifest and press Enter. Right-click the new DWORD value and click on Modify. Type 1 into the Value Data. Change the value’s Base to Decimal. Click on OK. Close the Registry Editor.
Then create a xxxx.exe.manifest file with the following content:
<?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> |
That first xxxxx part of the manifest needs to be of the exe file you want to have an external manifest
For the smartclient this means java, and then in particular the java webstart launcher file
so go to the java installation folder, mostly located in a location like this:
C:\Program Files\Java\jre1.8.0_111\bin
And then copy the manifest above to files like: jp2launcher.exe.manifest, javaws.exe.manifest, java.exe.manifest and javaw.exe.manifest
So all those exe files have a manifest file right besides it.
There can be 1 problem with this is and that is that the next release of Windows 10 doesn't support this external manifest setting anymore (it ignores the above registry setting). For me the current slow ring build of Windows 10 (beta release build of 14986 seems to broke this).
If that is the case then this can be only fixed by adjusting the manifest file inside the exe file, you need tools for this like ResourceTuner: http://www.restuner.com/
With that you can open the exe file an then adjust the manifest that the exe file has and change the ms_windowsSettings:dpiAware section if it has it to false (there should be a true then). If it doesn't have such a section copy the above manifest contents and replace it fully.