Remote Desktop Plus

Once upon a time in a company far, far away, I needed to find a way to have users automatically logon to a Remote Desktop session with a specific set of credentials. I searched everywhere, and although I did find some tools, none of them were exactly what I was looking for. So I decided to make one myself. With the help of a lot of information on the web, I managed to write my own utility, saving me tons of work.

Having done that however, I saw more possibilities. So as a way to spend what little free time I have left, I started writing Remote Desktop Plus. It’s Remote Desktop, but with some added features. Basically it allows you to launch a Remote Desktop session using a username and password entered from the command line (autologin) or imported from a saved profile. But that’s not all…

Features #

  • Login automatically from the command line.
  • It’s free. :-)
  • Supports launching and autologin of RemoteApps.
  • Remote Desktop Plus (RDP+) is not a clone or copy of Remote Desktop. It’s just a shell for the normal Remote Desktop client (mstsc.exe) on your computer.
  • Automatically trusts all local resources and the remote computer. No more annoying questions like: Do you trust the computer you are connecting to?
  • Allows you to save credentials (securely) in profiles. Profiles normally only work for the user who saved them and only on the computer on which they were saved. Profiles can be useful when administering a large amount of computers from a single point of administration. Changed the password for Administrator? Just edit the profile and you’re done.
  • Passwords entered from the command line can be encrypted for enhanced security. Useful when starting Remote Desktop from batch files or published applications (Citrix).
  • Remote Desktop Plus features a special restricted kiosk mode in which only the computer, username, password, or any combination thereof can be changed. When used as a published application, this allows you to grant (internal or external) support departments remote access to a range of servers in a much safer way.
  • You can specify a range of computers the user is allowed to connect to. Any attempt to connect to computers not in the list will be denied.
  • Ability to save frequently used connections as favorites for easy launching.
  • When logging on to a computer with local credentials, Remote Desktop Plus will try to determine the actual computername, so you don’t have to specify a computername in front of the username (like nldb01\sa). This is also useful when logging in to computers using an IP address instead of a computername (rdp /v: /u:administrator) or when logging on to Windows clusters.
  • Supports connecting through a Remote Desktop Gateway server.
  • When using custom .rdp files, RDP+ will save valuable text space in the task bar by not displaying the name of the .rdp file in the title bar.
  • Accepts both /console and /admin. No need to remember which version of Remote Desktop and/or which Service Pack for XP you’re running.
  • Can set the working screen size to either the maximum available size (so it looks like a normal maximized application) or to a adjustable size – by setting either a margin or specifying a percentage of the screen – so you can still move it around a bit.
  • When using multiple monitors, you can specify on which monitor the Remote Desktop session should be started.
  • Supports specifying a startup program (i.e. alternate shell) from the command line. You can use both local and remote environment variables in the command.
  • Features an optional system tray icon for launching and managing your favorites, and for quickly switching to currently active Remote Desktop sessions.
  • Launch favorites from the command line.
  • Normally Remote Desktop times out after about 30 seconds when connecting to a non-responsive (or still booting) computer. But the age of modems is a thing of the past and time is precious, so Remote Desktop Plus times out after only 3 seconds.
  • You can set your own title bar text and specify your own icon.
  • Has the ability to disable the close button in the title bar and remove the connection bar, thus forcing users to logoff gracefully instead of just disconnecting and leaving their remote sessions open.
  • Allows you to specify in the command line which drives or drive types to redirect and/or which drive(s) to exclude from redirection.
  • Ever had to login to multiple servers at once? Just enter those servers separated by commas and off you go.
  • Remote Desktop Plus also has a load balancing and (as of version 6.2) a failover feature. Specify multiple servers and RDP+ will randomly pick one of the servers to connect to. If this server is unreachable, RDP+ will skip it and cycle trough the other servers in the list, until it finds a responsive one. You can use this for example for legacy RemoteApps which are hosted on multiple servers without a session broker.
  • Has the ability to log all connections in a log file or the event log.
  • Still missing some command line parameters? RDP+ supports every option supported by the Remote Desktop .rdp file, using a special command line parameter. This gives you an unprecedented control over every aspect of the session, straight from the command line and without the need for specific RDP+ command line switches.
  • Allows setting default options through either the registry, Group Policies or an enviroment variable.
  • Some settings and options can be controlled through Group Policies. Group Policy templates for these settings are available for download on the site.
  • RDP+ has a very small footprint. It consists of a single file, less than 250 KB. No installation required on the client.
  • Contains no spyware, adware, browser toolbars, nag screens, phone home mechanisms or any of that stuff. And it never will.
  • And much more…

Screenshots #

Previous Image
Next Image

info heading

info content

Note: The GUI only appears when no remote computer has been specified or when the command line option /gui is used.

Command line parameters #

Remote Desktop Plus supports the following command line parameters:

rdp ["connection file"] [/v:computer[:port][,…]] [[/u:username] [/p:password | /pe:encrypted_password] | /i[mport][:profile]] [/domain[:domain]] [/console | /admin] [/[no]printers] [/nodrives | drives[:[-]drive[,…]]] [/[no]sound] [/[no]wallpaper] [/f[ullscreen] | /fit[:fitvalue] | /max | [/w:width] [/h:height] | [/multimon | /span]] [/pos:location] [/mon:monitor] [/title:"title text"] [/icon:"icon file"] [/start:"program"] [/noclose] [/ontop] [/wait] [/disconnect[:seconds]] | [/remoteapp:"||remoteapp"]] [/lb | [/t[:seconds] [/fo]]] [/o:"option[,…]"] [/encrypt] [/gui] [/kiosk[:mask]] [/[list]allowed:target[,…]] [/log[:"logfile"]] [/eventlog] [/tray] [/register] [/batch] [@"command file"] | [/fav:favorite] [/-[option|*]]
"connection file"The name of a .rdp file to be used for the connection.
/v:computer[:port][,…]Specifies the remote computer(s) to which you want to connect.
/u:usernameThe username to be used for logging in to the specified computer.
/p:passwordFor automatic logon, specify the password for the user.
/pe:encrypted_passwordSpecifies an encrypted password for enhanced security. Use /encrypt to generate. Also implies /kiosk.
/i[mport][:profile]Read username and password from the specified (or default) profile.
/domain[:domain]Specifies an optional default domain for the user. Defaults to the domain of the current user.
/console or /adminConnects you to the console/administrative session of a server running Windows Server 2003 or higher.
/[no]printersEnforce or disable printer redirection.
/nodrivesDisable drive redirection.
/drives[:[-]drive[,…]]Enforce or disable drive redirection for the specified drives or drive types.
/[no]soundEnable or disable sound from the remote computer to be played on the local computer.
/[no]wallpaperEnforce or suppress displaying the remote computer’s wallpaper.
/f or /fullscreenStart Remote Desktop in full-screen mode.
/fit[:fitvalue]Fit the remote screen size to the local screen. Enter a margin in pixels or a percentage of the local screen.
/maxFit the remote screen to its maximum size.
/w:widthSpecifies the width of the Remote Desktop session window, in pixels or as percentage of the screen.
/h:heightSpecifies the height of the Remote Desktop session window, in pixels or as percentage of the screen.
/multimon or /spanSet the Remote Desktop session monitor layout identical to that of the client.
/pos:locationSpecifies the starting location of the session window. Use either x,y coordinates or ‘center’.
/mon:monitorStart session on specified monitor number (1 or higher).
/title:"title text"Text to be displayed in the task and title bar.
/icon:"icon file"Icon to be displayed in the task and title bar.
/start:"program"Specifies the remote program to use as shell.
/nocloseDisable the close button in the title bar. Also removes all buttons in the connection bar.
/ontopForce the Remote Desktop session window to be always on top. Also disables the minimize button and removes all buttons in the connection bar.
/waitWait for the Remote Desktop session to end before continuing.
/disconnect[:seconds]Disconnect the session automatically after the specified amount of seconds. Default is 10 seconds.
/remoteapp:"||remoteapp"Specifies the RemoteApp to launch at the remote computer.
/lbUse load balancing to connect to one of the specified remote computers.
/t[:seconds]Try to connect to the computer indefinitely or for the specified amount of seconds until a connection is established.
/foUse the specified remote computers in a failover mode and connect to the first responding server in the list.
/o:"option,[,…]"Specify one or more extended options in .rdp file syntax format.
/encryptDisplay an extra button in the GUI for obtaining the encrypted password string for use with /pe.
/guiForce displaying the GUI.
/kiosk[:mask]Restrict the GUI to a mode in which only the computer, user and/or password can be entered.
/allowed:target[,…]Only allow connections to the specified names or IP addresses. Both wild cards and regular expressions (enclosed in parentheses) are allowed.
/listallowed:target[,…]Set the computer field to a list of only the specified computers or IP addresses. Wild cards or regular expressions cannot be used.
/log[:"log file"]Logs all started sessions in the specified file. Defaults to rdp.log in the directory containing the program.
/trayDisplay a system tray icon for access to your favorites or any active Remote Desktop session.
/registerRegister the .rdpc command file extension and add the program to the search path.
/batchSuppress all standard error message popups. Errors can be handled through the exit codes.
@"command file"Read command line arguments or extended options from the specified file.
/fav:favoriteDirectly starts the specified favorite. Ignores all other parameters.
/-[option|*]Negate previous corresponding option from the command line chain. Use /-* to negate all previous options.

Examples #

rdp /v:nlmail01 /u:administrator /p:P@ssw0rd! /max /mon:2

rdp /i:"Domain Admin" /fit /drives /noprinters /title:"%s (%u) – Remote Desktop"

rdp "G:\RDP\Support.rdp" /v:nlfps01 /u:helpdesk@donkz.local /drives:fixed,-c:,p: /log:G:\RDP\rdp%y%m%d.log

rdp /v:nlts03 /remoteapp:"||FileZilla" /u:donkz\ftp /p:Tr@ns1t

rdp /i:"Backup User" /kiosk /allowed:"10.10.*.*,nlfps*.donkz.local,(nl(app|db)\d{2}(%USERDNSDOMAIN%|))" /w:1024 /h:768 /domain:donkz

rdp /v:nlapp01 /i:"Control Center" /noclose /o:"redirectcomports:i:1, redirectsmartcards:i:1″

rdp /v:nlts01,nlts02,nlts03,nlts04 /lb /remoteapp:"||e-Help Client 3.0″ /u:donkz\helpdesk /pe:dixYA/m8pOHVVkQLAI9ifQ==

rdp /v:nldmz01 /u:donkz\dmz /p:P@ssw0rd! /start:"mstsc \\nlfps01\config$\RDP\DMZ.rdp /f" /title:"Standby Support" /icon:"%WINDIR%\System32\shell32.dll,43″

rdp /v:nldc05,nldc06 /i /console /fit:35

rdp /v:nlapp02 /u:donkz\internetkiosk /pe:356zm6vRajBcS3mnnudOOh43bZKSWewQ /noprinters /nodrives /start:"C:\Program Files\Internet Explorer\iexplore.exe -k"

rdp /v:nlapp03 /u:donkz\helpdesk /start:"\"C:\Program Files\Remote Control\rc.exe\"" \"\\nlfps01\Config$\RC\\%COMPUTERNAME\%\%USERNAME%.cfg\""

rdp /v:nlfps02 @options.rdpc /kiosk:cup /gui /log /tray

rdp /u:%USERDOMAIN%\%USERNAME% /kiosk:101 /gui /fit:95% /eventlog

rdp /kiosk:101 /listallowed:nlapp01,nlapp02,nlapp03 /noclose /ontop /u:Student1

rdp /fav:"Batch server" /-pos /fit

rdp /fo /v:nlapp01,nlapp02 /i

Myself, I use the second example the most. Just create a shortcut in your Quick Launch toolbar and you only have to enter the desired server name.

Notes #

Profiles #

Normally profiles are saved with the highest level of security, which means they can only be used using the account which created them and only on the computer they were created on. As of version 5.0, you can now also save profiles using a less strict security, which means they’ll be available on any other computer and will ‘roam’ with you. Please note however that because no external password key is used, a determined individual with the right tools (debuggers, disassemblers), the right knowledge of programming, access to the registry or computer of the user, and some other ingredients, could potentially break the encryption, so use this option with care.

Also new is the add-on tool RDPProfile.exe, which allows you to automatically create profiles from the command line. You could use this from a login script to pre-populate some profiles for end users.

Startup program #

If you need to use double quotes in the /start startup program, you have to put a backslash (\) in front of each quote. You can also use environment variables in your command, both local and from the remote computer. To use remote environment variables, you must precede the percent signs with a backslash.

Combined example: rdp /v:nlapp03 /u:donkzdomain\helpdesk /start:""C:\Program Files\Remote Control\rc.exe" "\\nlfps01\Config$\RC\\%COMPUTERNAME\%-%USERNAME%.cfg""

If Remote Desktop Plus is started by user JohnDoe, the last part of the command will be expanded to "\\nlfps01\Config$\RC\NLAPP03-JohnDoe.cfg".

Title #

You can set a user defined text as your title bar by using the option /title. You can use local environment variables in your title plus these two special variables:
%s: Will be expanded to the server name you’ve connected to.
%u: Will be expanded to the username used to login to the remote computer.

Example: rdp /i:"Domain Admin" /fit /title:"%s (%u) – Remote Desktop"

When connecting to the server nlfps01, this would result in the title bar text nlfps01 (DONKZDOMAIN\Administrator) – Remote Desktop.

Icon #

You can also use your own icon for the session by using the option /icon. This can be either a normal icon file (G:\Icons\Remote.ico) or an executable or .dll file (%ProgramFiles%\Internet Explorer\iexplore.exe). For files containing multiple icons, you can specify the desired icon using its index (%WINDIR%\System32\shell32.dll,43).

Please note that using /icon will also force an implied /wait, due to the way Windows retains (or does not retain) dynamically changed icons when the program which requested the changes is closed.

RemoteApps #

You can start a RemoteApp with Remote Desktop Plus, either from the command line or specified in the .rdp file. You can enter the RemoteApp using either its name ("||FileZilla") or the full path to the executable (C:\Windows\System32\Notepad.exe).

When using the name, always enclose it between double quotes, otherwise your system may confuse the double pipe signs with the double pipes used in batch scripting.

All options concerning the screen (like /fit and /mon) are ignored when using RemoteApps. The same goes for /title and /icon. 

Due to the way the Remote Desktop client launches all RemoteApps in a general, embedded instance of mstsc.exe, the option /wait is also not supported.

Remote Desktop Gateway #

Remote Desktop Plus can login to remote servers through a Remote Desktop Gateway. There are no command line switches, so all options must be configured from the normal Remote Desktop client and saved in a .rdp file, or entered through the /o option.

When you select the option Use my RD Gateway credentials for the remote computer, RDP+ will also automatically login to the RD Gateway. If not, you will be prompted for credentials.

Kiosk mode #

With the kiosk mode, you can set the GUI to a special restricted mode, in which only the fields for the target computer, username and password are shown. Using a 3-character ‘mask’, you can enable or disable any of the three fields. Each character in the mask stands for one of the three fields (computername, username, password). A 1 will enable the field, a 0 will disable it.
As of version 6.2, you can also use the first letters of the field(s) you’d like to enable as the mask: c(omputer), u(ser) and/or p(assword).

For example, /kiosk:011 or /kiosk:up will disable the computername field and only allow the user to enter the username and password.

The kiosk mode will default to 100 (or c) when a mask has not been specified.

Allowed targets list #

Using the /allowed command line option, you can restrict users to only a selected range of computers. If the user tries to connect to a computer which is not in the allowed target list, the connection will be denied. This can be especially useful for publishing RDP+ to ‘untrusted’ users.

You can use both wildcards and regular expressions in the list. RDP+ will also try to translate hostnames to IP addresses and vice versa for its matching. So for example, when using /kiosk:100 /allowed:127.0.0.*, a target computer of localhost will be considered valid.

Enclose targets in parentheses to use regular expressions. Environment variables are also supported.

Example: rdp /allowed:"10.10.*.*,nlfps*.donkz.local,(nl(app|db)\d{2}(%USERDNSDOMAIN%|))"

Note: When using the pipe sign (|) in a regular expression, be sure to enclose the entire string in double quotes to prevent conflicts with batch scripting.

You can also use the /listallowed command. This will transform the editable computer textbox in the GUI to a listbox with only the allowed computers listed. This can be more user friendly for third parties. Please note however that wild cards and regular expressions are not supported in this mode.

Drive redirection #

You can specify the drives you want to redirect to the remote computer by using the /drives option. Drives can be specified either by name or by drive type (Fixed, Removable, Network, CD-ROM). To redirect drives that get plugged in later, you can use the drive type Dynamic.

You can also exclude certain drives by preceding them with the minus sign. For example, /drives:fixed,-c:,p: will redirect drive P: and all fixed drives except C:.

If you don’t specify any drive or type, /drives will default to all drives, including the ones plugged in later.

Extended .rdp options #

By using the /o switch, you can specify every option supported by the .rdp file. Options should be given in the exact same syntax as used in .rdp files.

You can specify multiple options by separating them by commas. To use commas within options, precede them with a backslash.

Examples: rdp /start:terminal.exe /o:"shell working directory:s:H:\My Documents, redirectcomports:i:1″ rdp /remoteapp:"||ProdDB" /o:”remoteapplicationcmdline:s:proddb, sqlsa, P@ssw0rd, remoteapplicationname:s:Production Database”

The native RDP+ command line switches always take precedence over the /o options. So if you use rdp /printers /o:"redirectprinters:i:0″, then /printers will win.

For an overview of (most of) the possible settings, you may find this page useful.

Log file #

You can log all started sessions to a semicolon-delimited log file using the /log option. If you don’t specify the name of the log file, it will default to the file rdp.log in the directory containing rdp.exe. If you do specify a filename, the name can be further customized through both local environment variables (like %COMPUTERNAME%), and some special variables:
%s: Will be expanded to the server name you’re connecting to.
%u: Will be expanded to the username used to login to the remote computer.
%c: Will be expanded to the name of the local client computer. When starting RDP+ locally, this will be the same as %COMPUTERNAME%. When starting RDP+ from within a Terminal Server or Citrix session, %c will contain the computername of the originating client computer (i.e. %CLIENTNAME%).
%y: The 4-digit representation of the current year.
%m: The 2-digit representation of the current month.
%d: The 2-digit representation of the current day.

Example: rdp /log:%y%m%d-%s.log

When connecting to the server nlfps01 on the 31st of December, 2011, this would result in the log file 20111231-nlfps01.log being used.

The log file contains all kinds of information about the computer and user which started the session, and information about the target computer and how the session was started. When RDP+ is launched from within a Terminal Server or Citrix session, it will also log the computername and IP address of the originating client. This can also be useful when using thinclients. A typical log file could look like this:

2013-03-31 11:11:40;LTP0235;;Microsoft Windows 7 Professional;DONKZ\PeteL;-;-;nlfps01;3389;DONKZ\Administrator;5.0;7.1;Profile;Normal;-
2013-03-31 11:14:46;LTP0235;;Microsoft Windows 7 Professional;DONKZ\PeteL;-;-;nlsql01;3389;sql-sa;5.0;7.1;Password;Normal;-
2013-03-31 11:17:35;DTP0019;;Microsoft Windows XP Professional;DONKZ\JohnB;-;-;nlts01;3389;DONKZ\JohnB;5.0;6.1;Profile;Normal;-
2013-03-31 11:19:51;NLTS01;;Microsoft Windows Server 2003 Enterprise;DONKZ\JohnB;DTP0019;;nlapp01.donkz.local;3389;DONKZ\Helpdesk;5.0;5.2;Encrypted Password;Alternate Shell;mmc dsa.msc
2013-03-31 11:21:42;LTP0382;;Microsoft Windows 7 Professional;LTP0382\Administrator;-;-;nldc01;3389;DONKZ\Install;5.0;7.1;Password;Normal;-
2013-03-31 11:23:16;NLTS02;;Microsoft Windows Server 2008 R2 Standard;DONKZ\CharlesV;DTP0124;;;3390;Support;5.0;7.1;Encrypted Password;Normal;-
2013-03-31 11:26:07;NLTS02;;Microsoft Windows Server 2008 R2 Standard;DONKZ\Security02;WS_013184;;nlapp04;3389;DONKZ\Security;5.0;7.1;Kiosk;Normal;-
2013-03-31 11:28:13;DTP0024;;Microsoft Windows 7 Professional;DONKZ\TessaM;-;-;nlts01;3389;DONKZ\TimeManager;5.0;7.1;Encrypted Password;RemoteApp;||TimeManager
2013-03-31 11:34:54;LTP0235;;Microsoft Windows 7 Professional;DONKZ\PeteL;-;-;nlpos82;3389;-;5.0;7.1;Password;Administrative/Console;-

Or, for better readability:

2011-12-31 11:11:40LTP023510.0.1.163Microsoft Windows 7 ProfessionalDONKZ\PeteLnlfps013389DONKZ\Administrator5.07.1ProfileNormal
2011-12-31 11:14:46LTP023510.0.1.163Microsoft Windows 7 ProfessionalDONKZ\PeteLnlsql013389sql-sa5.07.1PasswordNormal
2011-12-31 11:17:35DTP001910.0.1.157Microsoft Windows XP ProfessionalDONKZJohnBnlts013389DONKZ\JohnB5.06.1ProfileNormal
2011-12-31 11:19:51NLTS0110.10.1.110Microsoft Windows Server 2003 EnterpriseDONKZ\JohnBDTP001910.0.1.157nlapp01.donkz.local3389DONKZ\Helpdesk5.05.2Encrypted PasswordAlternate Shellmmc dsa.msc
2011-12-31 11:21:42LTP038210.0.1.146Microsoft Windows 7 ProfessionalLTP0382\Administratornldc013389DONKZ\Install5.07.1PasswordNormal
2011-12-31 11:23:16NLTS0210.10.1.111Microsoft Windows Server 2008 R2 StandardDONKZ\CharlesVDTP012410.0.1.15010.10.2.1913390Support5.07.1Encrypted PasswordNormal
2011-12-31 11:26:07NLTS0210.10.1.111Microsoft Windows Server 2008 R2 StandardDONKZ\Security02WS_013184192.168.200.15nlapp043389DONKZ\Security5.07.1KioskNormal
2011-12-31 11:28:13DTP002410.10.1.129Microsoft Windows 7 ProfessionalDONKZ\TessaMnlts013389DONKZ\TimeManager5.07.1Encrypted PasswordRemoteApp||TimeManager
2011-12-31 11:34:54LTP023510.0.1.163Microsoft Windows 7 ProfessionalDONKZ\PeteLnlpos8233895.07.1PasswordAdministrative/Console

Event log #

Much like the /log option, the /eventlog option writes an entry in the Application event log:

Log Name: Application
Source: Remote Desktop Plus
Date: 2-04-2013 23:21:09
Event ID: 12701
Task Category: None
Level: Information
Keywords: Classic
User: N/A
Computer: DTP0348
Description: Remote Desktop session started…
Date and time: 2013-04-02 23:21:07
Computer: DTP0348
IP address:
Windows version: Microsoft Windows 7 Ultimate
Local username: DTP0348
TS client name: –
TS client IP address: –
Remote computer: nlapp03
Remote port: 3389
Remote user: DONKZ\Administrator
Remote Desktop Plus version: 5.0
Remote Desktop Connection version: 7.1
Password mode: Profile
Session type: Normal
Application: –

System tray icon #

RDP+ features an optional system tray icon. This icon can be used for the following things:

  • Managing and launching favorites.
  • Starting a new ‘blank’ instance of RDP+.
  • Quickly switching to currently active Remote Desktop sessions.
  • Automatically load the tray when you start your computer.
  • See which Remote Desktop session you had active last, or by doubleclicking the tray icon, immediately switch to the last active session.

When using the kiosk mode, the system tray reverts to a simpler mode, in which only the active sessions are available. This simple mode can also be enforced through the Group Policy.

Favorites #

When creating favorites, you have the option to save them with the option Save secured (user and computer bound). This means the favorite is only available on the computer it was created on. Use this option when you have specified sensitive passwords in the command line.

When not saving it as a secure favorite, the favorite will be available on any computer you logon to when using roaming profiles. It will be saved using the same encryption /pe or Gencrypt uses, so it is still secure from prying eyes.

Command file #

If you regularly use the same command line parameters, you can also put them in a separate file and specify this file with the @-parameter. RDP+ will then use the contents as its command line parameters. You can also put normal .rdp file style options in the command file, without having to precede them with /o. This way you can use the command file as a master .rdp file.

Comments can be added by starting the comment line with a semi-colon.

Example of a command file:

; Command line
/fit /noprinters /drives:fixed /icon:Company.ico /title:"%u on %s – Remote Desktop"

; Default .rdp file options

Tip: Use .rdpc as the suffix for the file and run RDP+ with the command line /register once to register the .rdpc extension to RDP+. This allows you to double click command files to immediately launch RDP+ and have the command files shown in the recent files when pinning RDP+ to the Start Menu.

Exit codes #

When starting Remote Desktop Plus from a script, you can use the option /batch to prevent RDP+ from displaying error messages. Instead you can catch potential errors through the exit codes (errorlevels) which RDP+ raises.

These are the possible exit codes which can be raised:
0: No errors.
1: General undefined error.
2: Specified connection file not found.
5: Target computer not in the list of allowed targets.
29: Cannot write to the log file.
30: Profile not found.
87: Invalid command line parameter or combination of command line parameters.
161: The format of the specified path is invalid (filename of the connection file, log file or command options file).
259: No responsive server found in the list (when using /lb).
2382: Invalid notation of the specified host name or IP address.
10060: Connection timed out to the specified server.
11001: Remote hostname not found.

Please not that exit codes are only raised when RDP+ is either started with its own /wait command line switch or when you launch RDP+ from a script using the appropiate syntax to wait for completion.

Examples of the latter:


START /WAIT rdp.exe blah blah


Set objWSH = WScript.CreateObject("WScript.Shell")
Shell = objWSH.Run("rdp.exe blah blah", 1, True)
WScript.Echo Shell


$Shell = Start-Process -FilePath "rdp.exe" -ArgumentList "blah blah" -Wait -Passthru

Setting default options #

As of RDP+ 6.2, you can set all of the ‘slashed’ command line options as the default option for Remote Desktop Plus by setting the user environment variable RDP.

For example, you can set RDP to /fit /mon:2 /noprinters /drives:fixed.

When you set /mon to a number higher than the number of monitors attached to your computer, RDP+ will automatically fall back to monitor 1. This means you can safely set it to 2 if you always want your session to start in the second monitor when it is available.

Default options can also be set using the registry key HKEY_CURRENT_USER\Software\Remote Desktop Plus\DefaultOptions or HKEY_LOCAL_MACHINE\Software\Remote Desktop Plus\DefaultOptions.

The default options can of course be overruled from the command line. Either by entering an opposing or overruling option (/printers vs. /noprinters, or /fit vs. /max), or (as of RDP 6.2) by using the negating /- option. For example: /-title will negate /title:"Something".

Localization #

You can localize RDP+ for your own language using a customizable XML file. In the download section you will find a Dutch template (language_nl.xml) which you can use to create your own translation. Once you’re done,  save it in the directory containing rdp.exe and replace the template part in the file name with the two letter (ISO 639-1) language code for the language your computer is running.

For example: language_de.xml for German.

Note: I’ve stopped maintaining the language templates, but you can still update them yourself. New versions of RDP+ will still support localization of all strings, new or existing.

Group Policies and registry #

Some of the behavior of Remote Desktop Plus can be controlled through Group Policies or registry settings. More information about this can be found on this page.

Order of preference for commands #

RDP+ supports many different ways for specifying commands or options. These are processed in the following order:

  • Value of HKEY_LOCAL_MACHINE\Software\Remote Desktop Plus\DefaultOptions.
  • Value of HKEY_CURRENT_USER\Software\Remote Desktop Plus\DefaultOptions.
  • Value of the environment variable RDP.
  • Content of the command file.
  • Command line arguments.
  • Machine part of Group Policy setting (Computer Configuration).
  • User part of Group Policy settings (User Configuration).

Last setting wins.

System requirements #

  • Windows XP / 2003 / Vista / 2008 / 7 / 2008 R2 / 8 / 2012 / 8.1 / 2012 R2 / 10
  • Microsoft .NET Framework 2.0 or higher

Note: If you intend to launch Remote Desktop Plus from a local network share and you’re running a version of .NET Framework prior to 3.5 SP1, you’ll need to execute the following command once from the command prompt:

%windir%\Microsoft.NET\Framework\v2.0.50727\caspol -q -m -ag LocalIntranet_Zone -zone Intranet FullTrust -n "Network shares" -d "Full rights in Local Intranet zone."

If you only have .NET 4.0 installed and no previous version of .NET, Remote Desktop Plus (or any other program targeted for previous versions of .NET Framework for that matter) will fail to launch with an error Unable to find a version of the runtime to run this application. You don’t necessarily have to install an older version of .NET to fix this however. Just create a file named rdp.exe.config with the following content and place it in the same directory as rdp.exe:

                <supportedRuntime version="v4.0″ />

Alternatively, you can download a ready-made rdp.exe.config from the download page. On the same page you will also find an MSI installer which includes this file by default.

License #

Remote Desktop Plus is free to use for home, personal or corporate use. You may use and distribute the program free of charge for both commercial and non-commercial purposes, as long as end users are not charged a fee of any kind for its use.

Download #

Current version: 6.2.1
Release date: May 25, 2015

Download the file
Remote Desktop Plus 6.2.1
(downloaded 2300 times)

Click here for the complete change log.

Total number of downloads (as of the release of version 6.2): 23,755

Remote Desktop Plus consists of a single executable. No installation is required.

Please feel free to leave your comments, bug reports or suggestions…

957 comments to Remote Desktop Plus

  • Hanswerner

    RDP PLus is a great tool!
    I would like to connect to Hyper-V VMs just like FreeRDP does with parameter "vmconnect". This replaces Hyper-V console so i can remote control VMs with no RDP Feature built within.

    Is there an Option in Donkz RDP like "vmconnect"?

  • Hi

    How do I specify a RD gateway on the command line.
    The following results in a message that the computer server01 not found.

    rdp /v:server01 /o:"gatewayhostname:s:rdgateway.myexternal.domain"



  • Hi Donkz
    I really like the effort you have put into this, i did find getting the right solution mix for what i was trying to do difficult even with the wealth of info here.
    anyway i managed to create a desktop shortcut that runs RDP+ and then use the @Command to use a text file with the commands in
    i bundle up the basic stuff into an innoscript install, to send the basic file out to customers, it copies all the files (rdp+, the icon, etc) into say C:\remote and puts a shortcut on the desktop and in the start menu
    the shortcut has @"startup.cos" in the additional features of the shortcut
    then just send out the specific text file (startup.cos) via email
    commands in the startup.cos are as follows
    ie / /u:ju***on1 /p:Q******4 /domain:costmanager /noprinters /max /title:"CostManager Cloud" /batch /noclose /icon:"costmanager.ico" /start:"F:\junction\ws1\costmanmain.exe"
    Everything works fine except the icon doesnt seem to get picked in the taskbar, any clues on that?
    also now i have that working i am trying to find a solution for the mac, any thoughts on that?

  • Hi there, have some trouble with rpd+. If I start connection thru rpd.exe and connect manual then barcode scanner works fine. It connected via keyboard. When I connect trhu cmd line all works fine too, but scanner give me barcode in lowercase format. Original barcode is BN10003491_1 but in rdp session a get bn10003491_1. What can it be?

  • Gonzo

    RDP plus return Exit Code -532459699 which is a COM error I believe. Is there a work around/fix?

  • Miro

    Hi Donkz,

    thanks a lot for RDPPlus, it’s an excellent tool, which saved me a lot of time.

    I would like to suggest a new feature – a possibility to connect via HTTP or SOCKS proxy.

    Thanks again and best regards,


  • Pieter

    Hi Donkz,

    I also like the option to start from URI. If you like to email the information and executable + a small howto would be great. You can email with Dutch or English information. I’m dutch :)


  • palsom

    Very good tool for developments.

    Thanks a lot.

  • hey Donkz , can you add : faceb00k : ? thank you for this website. unbelievable

  • Daniel

    Hey Donkz,

    thanks for the amazing tool!

    I have an idea for a new version:
    What about using the Windows Jumplist for Items in the Taskbar, like Putty does:

    Keep up the great work!


  • MFlyagin

    Is it possible to run two programs with different users simultaneously? Now when you start a second copy of the program, simply changing the focus on an already running session.

  • Joe


    Very nice bit of software, thank you.

    I want to have a "kiosk" type of environment for the user, but still allow them to terminate the RDP connection, not worried about how they leave the remote machine, also only allowing one session at a time, thus stay on top (already possible) but only allow terminate of session.

    One suggestion/request; you already have command line options "/noclose and /ontop" which disable the minimize,maximize,close buttons in the title bar.

    Would it be possible to have a option to remove only the "minimize + maximize" buttons, but leave the close button.


  • Keith C

    Hi, what’s the quickest way to uninstall RDPplus if I need to do this? Does it have to be done manually, or is there command line switch I can use?



    • Keith C

      Just to clarify by the way; RDPplus is a great tool, and invaluable to us…just so useful. I just need this info to be able to tidy up if I need to do a clean RDPplus install (which has happened in the past)

      Thanks again…


      • Donkz Donkz

        Hi Keith,

        You’re welcome and glad you find RDP+ useful. :)

        You’ve installed it through the MSI then, I presume?
        To uninstall the MSI, you can either do it through the Control Panel or by using the command: MSIEXEC /X{9F7C3862-2CE1-4625-A1B2-E5F3A6062147}
        This will uninstall everything the MSI did. Other settings (mainly profiles and favorites) will remain intact however.

        If you really, really want to clean up everything, you should also check/remove these registry keys:

        HKCU\SOFTWARE\Remote Desktop Plus – Profiles, favorites, MRU and some other settings.

        Plus, if you installed the MSI as a user with local administrator rights and then later used the /register switch:
        HKCU\SOFTWARE\Classes\.rdpc – File association for the .rdpc files.
        HKCU\SOFTWARE\Classes\RemoteDesktopPlus.Connection – File association for the .rdpc files.
        HKCU\SOFTWARE\Microsoft\Windows\CurrentVersion\App Paths\rdp.exe – Search path for rdp.exe.

        Hope this helps. :)


        • keith C

          Thanks for that, great info thanks.

          Something slightly different; any idea why one of our users might be getting an ‘Error 5: Invalid Class’ message in a ‘Remote Desktop Plus’ dialogue, when launching an .RDPC file? The RDP connection launches OK, but this error appear every time for him. No one else is affected on other workstations, even though they launch the same .RDPC connection file. Googling it doesn’t throw up much that’s helpful…

          Thanks again


          • keith C

            Sorry, to be clear, it happens with any .RDPC connection file he launches on his workstation, but no workstation is affected…

  • leon

    I have an axample how i use the command in the batchfile;

    start %1″\Program Files\rdp_plus\rdp.exe" /v:%2 /u:%3 /p:%4 /console /t:20 /max /noprinters /title:%5

    The variables i declare somewhere else.
    Can this work disfferent form xp of win 7 machines?

    • Donkz Donkz

      Hi Leon,

      That’s strange. Could you try adding the command line parameter /debug to your command?
      After you close the session, this will show some information about your system, Remote Desktop and how RDP+ and RDP were started.
      Could you then post the information here?


      • leon

        Hi Donkz,

        Where is the debug file stored if i do so?

        • Donkz Donkz

          Hi Leon,

          Nowhere. :)
          When the Remote Desktop connection is closed, RDP+ will show it in a screen, like in the attached example.

          You can then select the text and copy it to the clipboard using the standard key combinations CTRL+A and CTRL+C.


          • leon

            Ok here it comes.
            From the XP machine:

            Debug info

            RDP+ command line: "r:\Program Files\rdp_plus\rdp.exe" /debug /v:(ip masked) /u:(masked) /p:(masked) /console /t:20 /max /noprinters /title:(masked)
            Microsoft Windows: Microsoft Windows XP Professional 32bit Dutch (Service Pack 3)
            Remote Desktop Plus: 6.2
            Microsoft .NET Framework: 3.5.30729.01
            Remote Desktop Connection: 6.0.6001.22840 (6.1)
            Environment variable:
            Source .rdp file: C:\Documents and Settings\Administrator\Mijn documenten\Default.rdp

            RDC command line: C:\WINDOWS\system32\mstsc.exe "C:\Documents and Settings\Administrator\Local Settings\Temp\Remote Desktop Plus.01E3C.tmp" /v:(masked) /console /w:1280 /h:719

            Errorlevel: 0
            Connection file content

            session bpp:i:16
            disable wallpaper:i:1
            disable full window drag:i:1
            allow desktop composition:i:0
            allow font smoothing:i:0
            disable menu anims:i:1
            disable themes:i:0
            disable cursor setting:i:0
            autoreconnection enabled:i:1
            negotiate security layer:i:1
            screen mode id:i:1
            prompt for credentials:i:0
            prompt for credentials on client:i:0
            password 51:b:01000000D08C9DDF0115D1118C7A00C04FC297EB0100000026585C7E6C1BC04EBE77F518D2B27B830000000002000000000003660000A80000001000000010842DEB1D0C2595CD2FAFB09D0E9D190000000004800000A0000000100000007F25A1D216B363829822279A14CE15A220000000943116B71495BB7136D240987F47046FF73A0B3AAEA55CA3D383EDCF5BF7A9B9140000001CAD489690F6AC155F561279498E716E1C28F19C
            authentication level:i:0

            And from the XP machine:

            Debug info

            RDP+ command line: "z:\Program Files\rdp_plus\rdp.exe" /debug /v:(masked) /u:(masked) /p:(masked) /console /t:20 /max /noprinters /title:(masked)

            Microsoft Windows: Microsoft Windows 7 Enterprise 32bit Dutch (Service Pack 1)
            Remote Desktop Plus: 6.2
            Microsoft .NET Framework: 4.5.51209
            Remote Desktop Connection: 6.1.7601.18540 (7.1)
            Environment variable:
            Source .rdp file: C:\Users\(masked)\Documents\Default.rdp

            RDC command line: C:\Windows\system32\mstsc.exe "C:\Users\(masked)\AppData\Local\Temp\Remote Desktop Plus.01DBC.tmp" /v:(masked) /admin /w:1920 /h:1018

            Errorlevel: 0
            Connection file content

            session bpp:i:32
            connection type:i:2
            disable wallpaper:i:1
            allow font smoothing:i:0
            allow desktop composition:i:0
            disable full window drag:i:1
            disable menu anims:i:1
            disable themes:i:0
            disable cursor setting:i:0
            autoreconnection enabled:i:1
            negotiate security layer:i:1
            use redirection server name:i:0
            screen mode id:i:1
            prompt for credentials:i:0
            prompt for credentials on client:i:0
            password 51:b:01000000D08C9DDF0115D1118C7A00C04FC297EB01000000BD825E7E127C0A4988E5E84302F0C9200000000002000000000003660000C000000010000000CCCA3B07BF0FA8351259644992B294E30000000004800000A0000000100000003C44337CBA2F282E62316406B0DDC4F220000000908B96C04AD885FCCD7FF22291B0CB21AEB0AD9807CB1FB4B3AB02D44888C03A14000000778AE108CAA170DC62A8989EE9D8DAD420E8B292
            authentication level:i:0

            • Donkz Donkz

              Hi Leon,

              Hmmm. Looks like he’s using /console when it should be /admin already for that version of MSTSC. Hang on for a moment…


            • Donkz Donkz

              Hi Leon,

              I’ve sent you a link to my latest development version. It seemed to be a problem with the comma as the decimal point in Dutch Windows. Could you try it with that version?


  • leon

    Hi Donkz.

    I use the rdp+ application to automate the login process in a variëty of servers.
    Mostly 2003 SR 1 servers, but sometimes 2k8 servers also.
    I call the rdp+ application from a batchfile, and i add the commandline switch /console to it.

    For the servers we acces remotely is is neccesary is is a console session. So in 2k3 server it is "session 0″

    The problem i have occurs when logging in from an XP machine . T just doesnt connect as a console session.
    I have no problems logging in from a Win 7 machine.

    I’ve tried /console and /admin as well. When i start an RDP session with the mstsc command (/console of /admin switch added) it does work!

    Can you help me?

  • David


    Awesome tool. I have a feature request for you. Support Microsofts URI scheme, which mstsc.exe currently doesnt.

    See the URI scheme here:

    and see how you can register URIs in the register here:

    • Donkz Donkz

      Hi David,

      Thanks. :)

      Funny you should mention it, because that’s (almost) exactly what I’ve been working on. :)

      It will be a somewhat different scheme of course, because of the different command line options. I have a lot, while the default scheme only supports some .rdp file attributes.

      In RDP+, this…
      rdp /v: /mon:2 /u:DOMAIN\User /p:P@ssw0rd! /nodrives /fit:35 /o:"disable themes=i:1″
      … would be the same as the URI…
      rdp://\User&p=P@ssw0rd!&nodrives&fit=35&o="disable themes=i:1″

      If you’d like to test it, I can send you a development version.


  • jia

    hi, Donkz,
    your examples saved me lots of time, and I just wonder, if there is a way to login to a remote desktop through a gateway with different username/credential.
    like xfreerdp under linux has such options, does not work under windows, however..

    xfreerdp / /size:1280×800 /u:user1 /d:test / /gateway-usage-method:direct /gu:test\\user2 /gp:PasswordforUser2 /gd:test -nego /p:PasswordForUser1

    as above, i login through, with different users, user1 and user2.

    • Donkz Donkz

      Hi Jia,

      It’s still on my to do list, but I currently don’t have a proper RDS Gateway configuration at my disposal, so it’s a bit hard to test. If you could provide me with access to one however, I’d be happy to see if I can implement it in RDP+.


  • Piere


    Just a query regards accessing a session host farm. I can get the following to work fine and love the /lb switch and the way it works. As follows:

    C:\rdp.exe /v:server1,server2,server3 /lb /remoteapp:"||iexplore"

    However, is there a way for it to target a session collection from a RDS2012 Connection Broker server?
    Something along the lines of:

    C:\rdp.exe /v:ConnectionBroker {Insert Session Host farm name or Remote app session collection name} /remoteapp:"||iexplore"

    Thanks for any assistance. Great utility!


    • Donkz Donkz

      Hi Piere,

      Thanks. :)

      As a matter of fact, I’m working on exactly that. Until recently, I never had access to a connection brokered RDS environment to test it. I do now. :)
      Just have to find the time…

      But chances are, it will already work with the current version.
      What you could try doing is this command line:
      C:\rdp.exe /v:ConnectionBroker /remoteapp:"||iexplore" /o:"use redirection server name:i:1″

      That should pass the connection through the broker instead of to the broker itself.


      • Piere

        Will try that once at work. Currently, I’m connecting doing the following :
        C: \rdp.exe /v:RoundRobinDNS /remoteapp:"||iexplore"

        This now works fine. However, XP SP3 had a kerberos issue and after more digging I found it required an additional 3rd update to get it working. It didn’t recognise DNS Round Robin setup though Win7 and above did.

        I think the above still uses the advantage of the connection broker choosing which of the 3 farm servers it uses as the dns round robin name is randomly selecting one of the 3 IP addresses assigned.

        Do you think that would be the case? Like I said, it works but I will look at your way and try that.

        Cheers and thanks again for such a brilliant utility. It’s really helping me out of a hole!


        • Donkz Donkz

          Hi Piere,

          You’re welcome. :)

          I’m not sure. The main disadvantage of round robin DNS is that it can’t check if the target is up or down. So if one of the three servers is down, one third of your users will still be routed to an unvailable server.
          The /lb switch on the other hand will first check if the RDP port of the server is reachable, so this won’t happen. So as a mechanism, it’s a bit smarter than round robin. (It also randomly picks one of the servers by the way.)


  • Jon Dustin


    I absolutely *love* RDP+, and use it every day. You have built an excellent utility.

    There is one suggestion I can offer, and it is minor. When opening a new connection (from the GUI), the SCREEN SIZE parameter will only show what MSTSC "last used" as a size. It would be very helpful if we could specify some common sizes and have them appear on this list (small, medium, large – based on our monitors).

    Thanks again for this wonderful utility, and for reading this message.

    • Donkz Donkz

      i Jon,

      Thanks and you’re welcome! Glad you like it. :)

      I’ll have to think about it.
      But you can also use something like this in the command line (or environment variable to make it the default):
      /w:50% /h:50% /fit:75%
      This would put the fixed screen size in the GUI to 50% of the size of your activemonitor and the fitted size to 75%.
      The larger your monitor, the larger the sizes will automatically be.


Leave a Reply




You can use these HTML tags

<a href="" title=""> <abbr title=""> <acronym title=""> <b> <blockquote cite=""> <cite> <code> <del datetime=""> <em> <i> <q cite=""> <s> <strike> <strong>

Notify me of followup comments via e-mail. You can also subscribe without commenting.