I did this by changing the "Shell" value in "HKLM\SOFTWARE\Microsoft\Windows
NT\CurrentVersion\Winlogon" to point to a .cmd script that invokes mstsc.exe
with a specific .rdp file pointing to my Terminal Server. It loops around so
launches again if the user logs off or otherwise loses their session. Simple
but effective and the user doesn't really see the script - they can stop the
script but the cmd window closes so they can't get at the local system. I
guess you could write a simple Win32 GUI app that used CreateProcess() if
you wished but this saves the effort and is easier to change. I guess that
you could just specify mstsc.exe as the executable if you didn't want to
pre-customise the user's settings (or change their default.rdp instead).