windows 7 - RDP for High DPI Monitors?

07
2014-07
  • Joey

    A client is having some problems with their laptop. They use RDP to remote into their work PC, but the laptop they are using is a small 13" Sony Vaio laptop, but with 1920x1080 resolution.

    Everything is pretty small on the laptop anyway, but the problem is much worse after connecting with RDP, where everything is almost unreadable.

    I have done the obvious with changing the resolution on the server, the RDP size, forced scaling on the terminal server etc, but nothing has worked.

    Something else which I would normally do is change the laptop resolution to something a little lower, but the laptop only has 2 resolution settings, the big one, and a 1024x768 (wrong ratio).

    Any ideas?

    UPDATE

    I found a solution, which is not to bother looking for a remote desktop client that can resize , zoom or scale, but instead found some software called "NRC", or "Netbook Resolution Customizer".

    It enables more resolutions to choose from, and even set hotkeys to switch between them.

    http://www.netbookfiles.com/1/netbook-resolution-customizer-version-10-beta2/

  • Answers
  • LPChip

    In an RDP connection file (you can make one if you open RDP, and then choose the button Save as) you can store options such as resolution, going full screen, etc.

    If you go full screen, the RDP session will automatically set the remote resolution to whatever you use. So if the laptop uses 1920x1080 then the remote resolution will become that as well.

    This means that the view should be the same, unless you changed the DPI setting locally. You can hack this on a terminal server, but note that it'll work for all users.

    You can try making a shortcut and enter the following parameters:

    mstsc /v:servername[:port] /f /w:1280 /h:720
    

    Note that /v:servername[:port] means /v: (enter name of the server and optionally add : + portnumber)

  • cdavid

    RDP 8.1 introduces something called DPI remoting. This basically takes the DPI settings on the client machine and can send them to the server machine such that the aspect of the desktop is maintained. RDP 8.1 requires Windows 8.1 / 2012 R2 running on the server side and an RDP 8.1 client (it can be Win7 + latest QFE for RDP).

    Here are more details about the feature: http://blogs.msdn.com/b/rds/archive/2013/12/16/resolution-and-scaling-level-updates-in-rdp-8-1.aspx

  • Joey

    I found a solution, which is not to bother looking for a remote desktop client that can resize , zoom or scale, but instead found some software called "NRC", or "Netbook Resolution Customizer".

    It enables more resolutions to choose from, and even set hotkeys to switch between them.

    http://www.netbookfiles.com/1/netbook-resolution-customizer-version-10-beta2/


  • Related Question

    compatibility - How to force high-dpi scaling?
  • Ian Boyd

    How can i force an application to be high-dpi scaled?

    • Pretend there is an application, who's developers manifested it as high-dpi aware, when it really isn't. How can i force dpi-scaling?

    • Pretend there is an applicaiton that Microsoft has applied the "HighDpiAware" compatiblity shim, when the application really isn't. How can i force dpi-scaling?

    How can i force Windows to apply dpi-scaling to an application?


    Edit: What is high-dpi scaling?

    Not all users run Windows at 96dpi. Not every button is supposed to be 75x23 pixels, not every toolbar is 25pixels high, and not every treeview glyph is 16x16. If the user has chosen a different dpi setting for Windows, you need to scale everything appropriately.

    Problem is that almost no developers do their job by handling high-dpi settings nicely. At best everything will stay "the same size", which means that every appears teeny tiny. At worst forms are incorrectly laid out, with text being clipped, and controls not visible.

    Starting with Windows Vista, and leveraging the power of Desktop Composition, Microsoft gave up on developers doing their job, and now lie to application. They tell apps that the user is running at 96dpi. Windows then uses the video card, and Desktop Composition, to scale up the forms.

    Pro: the form's content will be a nice readable size.
    Con: everything will be slightly fuzzy.

    This "high-dpi scaling" feature only works at the user's discretion, and requires:

    • Windows Vista or newer
    • Desktop Composition to be enabled
    • the user to turn off "Use Windows XP style scaling"
    • the user to not disable scaling for your application

    As a developer, you can opt out of the high-dpi scaling; if you took the effort to write your application properly, and you know that you'll handle high-dpi properly. You opt out of this scaling by adding a manifest entry to your executable, declaring that you are "high-dpi aware".

    The topic of how to make your application respect the user's preferences (including font face, font size, and dpi setting) is a question for stack overflow. As is the syntax for the manifest entry declaring your "high-dpi awareness".

    This question, on super-user, is how to ignore a developer who went ahead and added a high-dpi aware manifest entry, when in fact the application isn't high-dpi aware. They told Windows to disable scaling, but they didn't actually test the application. There is software out there with a "high-dpi aware" manifest entry, and now the application is unusable under "large fonts" (e.g. 120dpi).


  • Related Answers
  • SamB

    Hmm. My suggestion would be to edit the manifest and remove the incorrect declaration. And don't forget to bug the developer about it however you can!

    Edit: Note that it should be possible to simply place the manifest next to the executable, e.g. for foo.exe, you would place the manifest in foo.exe.manifest. See MSDN article (look in the section called "File Name Syntax").

  • trlkly

    You can still edit the manifest, you'll just have to edit it in the .EXE file itself. Look for a resource editor that has manifest support. An example with rudimentary support is XN Resource Editor.) Just find and delete the line that mentions HIGHDPIAWARE and save the executable.

    Be sure to make a copy of the executable before you edit it, though!

  • James T

    I wonder if ResizeEnable is what your looking for?

    http://www.digitallis.co.uk/pc/ResizeEnable/

  • GeorgeH

    I just released a DLL that hooks and redirects calls to SetProcessDPIAware. For those applications that disable DPI scaling through code, this is a fast and easy fix (compared to binary patching).

    DPIMangler: Blog post, source code.