HP Thinpros and Windows 2008 R2 Remote Desktop Services (RDS)

I’ve been sitting on this blog for a while; so I thought it was about time I published it! Just recently we’ve been working with a client that was going through a desktop transformation process from Windows XP to HP thin client’s using a shared desktop on Windows 2008 R2 Remote Desktop Services (RDS). I’m not going to expand on why they chose Microsoft RDS over Citrix XenApp 6.x or why they chose Linux-based thin clients over Windows Embedded clients. Let’s just say that money did come into the equation.

What I’m going to cover in this post are the issues I’ve encountered whilst using the HP t5565 Linux-based thin clients with Microsoft’s RDS.

Remote Desktop Services Connection Broker

Lets start with the BIG one; they do not support the Remote Desktop Connection Broker (RDCB) or should I really say the open source rdesktop doesn’t! Now when I mean they it’s not supported, it can imply that it will work fine (but please don’t ask the vendor to help if any issues arise). In this case it simply doesn’t work. When the RDCB tries to either load balance or reconnect a disconnected session you will face a situation where you enter your login credentials then the session seems to just drop. If you are lucky your load balancer or round-robin DNS will direct you to the correct server, but this is just the laws of probability in action.

I should point out that this point will probably be an issue for any thin clients that are Linux-based and and utilising the rdesktop client. I have heard rumours that FreeRDP does work with the RDCB but I’ve not tried that myself so can’t confirm this; though this forum post does suggest it will work.

Bitmap Caching

Using “Bitmap Caching” in the rdesktop settings causes the screen to freeze randomly; so you have to way up the pros and cons of leaving it turned on. The benefits of enabling the bitmap cache is to minimise the amount of data transferred between the RDP client and server. However, this introduces the screen freezes. As a result, I went with disabling the bitmap caching to improve the user experience – the client had a well connected network so latency etc. was not an issue.

Other Issues

  1. Drawing shapes in Office 2003 will cause the screen to freeze and the system will become unresponsive – Resolved with this forum post.
  2. Using a second monitor to extend the primary display doesn’t work i.e. only show the taskbar on the primary display. What happens is screen spanning occurs therefore the taskbar is split across both monitors and the “Ctrl+Alt+Del” dialogue appears slap bang in the middle of where the monitors join – Resolved with this forum post (though I haven’t had time to test this myself).

I think the moral of this story is to try before you buy and then try some more! If you want to use the RDS Connection Broker then go for a Windows Embedded thin client, if indeed you want to use a thin client. Taking this approach may save you a lot of headaches going forward.

Nathan

Change RDS User Logon Modes using RES Automation Manager

If you are using Windows 2008 R2 Remote Desktop Services you might have noticed that there are various user logon modes available on the Remote Desktop Session Host; which you can see from the screen shot below:

These are all well and good should you wish to manually change the user logon modes i.e. Allow reconnections but prevent new logins until the server is restarted for say maintenance purposes. But if you are already using RES Automation Manager why not complete this task in a more automated fashion? Well this can be easily achieved by adding the following tasks and module parameter.

Module Tasks:

image

Module Parameters.

RDSConnModParam

Module Task 1 (Enable Logons):
  1. Add Task > Remote Terminal Server Logons.
  2. Settings > Enable Logons.
  3. Condition Expression > User Logon Mode = 1.
  4. Condition Expression > Computer Function = Terminal Server.
  5. If condition is TRUE then > Execute this task, but skip all remaining tasks in this module.
  6. If condition is FALSE then > Skip this task.
Module Task 2 (Disable Logons) :
  1. Add Task > Remote Terminal Server Logons.
  2. Settings > Disable Logons.
  3. Condition Expression > User Logon Mode = 2.
  4. Condition Expression > Computer Function = Terminal Server.
  5. If condition is TRUE then > Execute this task, but skip all remaining tasks in this module.
  6. If condition is FALSE then > Skip this task.
Module Task 3 (Allow connections) :
  1. Add Task > Registry Settings (Apply).
  2. Settings > Add the following registry value.
  3. [HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\Control\Terminal Server]
    “TSServerDrainMode”=dword:00000000.
  4. Condition Expression > User Logon Mode = 3.
  5. Condition Expression > Computer Function = Terminal Server.
  6. If condition is TRUE then > Execute this task, but skip all remaining tasks in this module.
  7. If condition is FALSE then > Skip this task.
Module Task 4 (Allow reconnections, but prevent new logons) :
  1. Add Task > Registry Settings (Apply).
  2. Settings > Add the following registry value.
  3. [HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\Control\Terminal Server]
    “TSServerDrainMode”=dword:00000002.
  4. Condition Expression > User Logon Mode = 4.
  5. Condition Expression > Computer Function = Terminal Server.
  6. If condition is TRUE then > Execute this task, but skip all remaining tasks in this module.
  7. If condition is FALSE then > Skip this task.
Module Task 5 (Allow reconnections, but prevent new logons until server is restarted) :
  1. Add Task > Registry Settings (Apply).
  2. Settings > Add the following registry value.
  3. [HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\Control\Terminal Server]
    “TSServerDrainMode”=dword:00000003.
  4. Condition Expression > User Logon Mode = 5.
  5. Condition Expression > Computer Function = Terminal Server.
  6. If condition is TRUE then > Execute this task, but skip all remaining tasks in this module.
  7. If condition is FALSE then > Skip this task.

Once you have created the module, when you come to schedule the job its then a simple matter of selecting which logon mode you would like to apply from the job parameters. Of course you can schedule the job on individual, multiple or teams of agents.

image

To make life even easier I’ve created a handy building block that you can import into your environment.

Any questions just ask.

Enjoy

Nathan

Workspace Manager, Aero Basic Theme and Mandatory Profiles

For those of you that have attempted to deploy RES Workspace Manager 2011 (or RES PowerFuse 2010) on Windows 7 and wanted to use Mandatory Profiles with the Windows Aero Basic experience, you might have come across this issue. If you utilise the standard .Default user profile as your starting point for the Mandatory profile, you may discover that users do not have the Aero theme enabled as expected. The user experience either on traditional physical or hosted virtual desktops may look something like this:

image

Note: This typically happens if you enable the “Disable Active Setup (skip first-time shell init)” option in Composition > Desktop > Lockdown and Behaviour section of the RES Workspace Manager management console. This presumably because by the time User Settings are loaded by RES Workspace Manager, the Themes service has already processed the required registry keys loading the (mandatory) profile.

The resolution to this is to enable the Aero theme when utilising the Mandatory profile and export the HKCU\Software\Microsoft\Windows\CurrentVersion\Themes and the HKCU\Software\Microsoft\Windows\CurrentVersion\ThemeManager registry keys. These can then be merged into the existing NTUSER.MAN registry hive to enable the Aero theme by default (see the Updating Mandatory Profiles post for further information on how to do this).

When you update the Mandatory profile with the Themes/ThemeManager settings you’ll end up with something like this:

image

Note: This process is also applicable for Windows 2008/R2 RDS servers with the Desktop Experience feature installed.

Easy when you know how! Iain