													RDPManager

First, I would like to thank Cody Adams, Dave Kratter, and John Pinto for the 
great ideas and the pre-production testing they have done.

RDPManager is an application that will collapse any Microsoft Terminal Service 
devices into one central location, using preferred screen size, usernames/passwords,
along with custom settings.

There are two parts to this application.  The application itself and an example 
XML file that is located in the same directory by default.

How to launch: 
To quickly add a shortcut in the Startup folder in the start 
menu, create a folder somewhere, copy the distribution files to it, and double 
click on RDPManager.exe. An icon will appear in the taskbar. Right click this 
icon and select About, and then click the startup button.

-OR-

Create a folder somewhere (like C:\Program Files\RDPManager ). Copy distribution files there.
Run RDPManager, and click Yes when the program asks you if you want to use your profile to 
data files. Click Yes on the next question to store your configuration file in the profile. 
Right click on the icon in the system tray, and select About. Click the Shortcut button, and
you will be prompted by a file dialog box. Pick a folder (Like PROFILE\Start Menu\Programs\Startup ), 
type in a name ( Like RDPManager ), and click OK. A shortcut will be created for you. If you put it in 
the startup folder, RDPManager will be run every time you log in.

-OR-

Create a shortcut to the application in the startup folder or on the desktop of 
the windows workstation. By default, By default, first RDPManager will look for RDPManager.xml 
in the profile AppData directory. If it is not found there, RDPManager will use RDPManager.xml in the 
directory it is run from as the configuration file. You can specify configuration 
file(s) on the command line. Below is an example how to load multiple XML 
configuration files by just using a space to separate the xml file locations. By 
design Microsoft requires quotes around any file or directory that contains 
spaces so keep that in mind when creating your specialized shortcut. 
C:\RdpManager\RDPManager.exe \\netserver\network share\RDPManager.xml C:\RdpManager\Personal_Servers.xml

Once you launch the shortcut by adding to the startup folder or via a shortcut 
on the desktop a small RDP icon will show up on the taskbar to the bottom right 
of the screen. The icon looks like 3 computers grouped in a triangle.

Right Click the RDP icon and it will show a list of available choices and 
computers or folders specified in the XML file.

Information about the Menus listed when the RDPManager Application is right clicked:

About:
	Has version information of the application along with the Authors. 
Also contains a button (labeled Shortcut) which will create a shortcut in the Startup folder of the 
Start menu. Another button will empty out the Recent List (labeled Reset Recent). 
The number of recent entries remembered is also displayed.
The button Add To Registry will add all the machines in RDPManager's config files to a spot in the
registry. This will eliminate the "remote connection cannot be identified" dialog box.

Manage Passwords:
	When the RDPManager is first launch the application it will 
prompt that a default password must be set.  Inside the Password Management 
the Default must be modified with default credentials, use any credentials that 
are needed to connect to the majority of the servers and/or workstations. 
Different passwords can be added by clicking the Add button; this gives you the 
option for the machine, username, password and domain fields; this area only 
needs to be used if a different username, password, and domain needs to be 
different than the default profile.

Edit XML:
	This area reads the XML files you used to launch the application and 
gives you an easy way to edit them using your default text editor.  After 
saving the XML file it will Reload XML automatically.   ***The DisplayName 
field is required to be unique! Do not use a duplicate DisplayName or an error 
will occur.

Manual  There will be certain circumstances that will warrant manually launching 
an RDP session not listed in the XML files.  Type the DNS name or IP of the machine 
that is needed to connect with.  Select the options desired, such as full screen, 
console, colors, username, password, and domain.  Modify any or all 
of these parameters and click the "Connect" button to connect.  Afterwards, the same manual 
connection can be relaunched using the same settings by using the drop down box. 

Below is a list of options along with the formatting for the options and a small 
explanation for the XML file.  The included options will work as a global 
variable or you can change any specific variables on the RDPConnection line.

RDPMultiConnections - A new tag has been added to the xml syntax, instead of 
RDPConnections you can use RDPMultiConnection to open up multiple machines with 
one click, like this:

 <RDPMultiConnection DisplayName="MultiTstConnect" MachineNames="tst1;tst2;tst3a"/>
 <RDPMultiConnection DisplayName="GroupTstConnect" GroupName="Server Group 1"/>

There are two flavors of this statement:

MachineName="" : You can list multiple machine names in MachineNames="" separated by a semicolon. 
This wil open up multiple machines at 1 time.
--or--
GroupName="" : You can put in a group (a heading with machines under it in the XML file) and it will
open up all the machines in that group, and all the machines in any sub groups, recursively.

Example XML file Syntax:
Globals:  Modify any of these settings for all devices in this XML.  

Definition of Variables

ScreenMode="1"                   : 1  windowed 2  fullscreen
DesktopWidth="1024"              : number of pixels for desktop width.  Example Widths are 640, 800, 1024, 1280   *Must used with ScreenMode=1
DesktopHeight="768"              : number of pixels  for desktop height.  Example Heights are 480, 600, 768, 1024  *Must used with ScreenMode=1
SessionBpp="16"                  : bit depth for session - 8, 16, 24, 32.  These values depend on the server and client abilities.
Compression="1"                  : means use extra compressions
KeyboardHook="1"                 : standard Windows key combinations.  Like Windows Key, alt tab, ctrl esc
									0  On the local computer
									1  On the remote computer
									2  In fullscreen mode only
AudioMode="1"                    : Change the audio settings to leave on the server or bring to local box
									0  Bring to this computer
									1  Leave at remote computer
									2  Do not play
DrivesToRedirect =""             : XP / Vista Only Example * (All Drives Redirected) C:;D:;  only C and D Drives Redirected make note of the ; 
RedirectPrinters="0"             : redirect the printer 0  no, 1  yes 
RedirectComPorts="0"             : redirect the serial ports 0  no, 1  yes
RedirectSmartCards="0"           : redirect the smart cards 0  no, 1  yes
DisableWallpaper="1"             : disable the wallpaper 1  disables the wallpaper in windows
DisableWindowDrag="1"            : disables viewing the window contents while dragging 1  disables this feature 
DisableAnims="1"                 : disables windows menu animations 1  disables this feature
DisableThemes="1"                : disables the use of windows themes 1  disables this feature
DisableCursor="1"                : unknown setting
ServerPort="3389"                : change the RDP port for non standard setups, for example to redirect multiple RDP sessions through a firewall
ConnectToConsole="1"             : connect to a windows 2003 servers console, will take over the session, XP and Vista computers are always console
DisplayConnectionBar="1"         : displays the connection bar in full screen 1  shows this bar
CmdLine="C:\Server.VNC"			 : An alternative way of running something when a machine is clicked. Instead of mstsc, this command will be run. 
									Useful for VNC and PCAnywhere connections. If this entry is found, all other options are ignored.
CmdArgs="192.168.1.250" 		 : The command line arguments passed when CmdLine is run.
NumRecent="15"					 : This sets the number of recent machines RDPManager puts in the Recent submenu
NumMRUs="5"						 : This sets the number of most used machines RDPManager puts in the Recent submenu
DisableCredsSPSupport="1"		 : CredSSP enables a program to use client-side SSP to delegate user credentials from the client 
								   computer to the target server. Unless this is set up properly on the server and client side, 
								   if it is enabled you will see another credential dialog box when connecting to Vista or Server 2008. 
								   Disabling it makes that dialog box go away. 1 - Disabled, 0 - Enabled
DeleteOldRDPFiles=""			 : Whether to delete old RDP files. Particularly useful in Windows 7		
ShowPasswords="0"				 : Sets the default behaviour of the Display Passwords check boxes in password entry forms. 1=Display Passwords checked (true)						   

(Example XML file)
 <!-- Globals  -->
<RDPConnections ScreenMode="1" DesktopWidth="1024" DesktopHeight="768" SessionBpp="16"
								 Compression="1" KeyboardHook="1" AudioMode="1" 
									DrivesToRedirect ="" RedirectPrinters="0" RedirectComPorts="0" 
									RedirectSmartCards="0" DisableWallpaper="1" DisableWindowDrag="1" 
									DisableAnims="1" DisableThemes="1" DisableCursor="1" ServerPort="3389" 
									ConnectToConsole="1" DisplayConnectionBar="1" NumRecent="15" 
									ShowPasswords="0" DisableCredsSPSupport="1" >


<RDPConnection MachineName="192.168.0.1" DisplayName="test level 1 device 1" ScreenMode="2" />

<RDPConnections DisplayName="Folder 1">
<RDPConnection MachineName="192.168.0.2" DisplayName="test folder 1 device 2" ScreenMode="1" DesktopWidth="640" DesktopHeight="480" />

<RDPConnections DisplayName="Folder 2">
<RDPConnection MachineName="192.168.0.3" DisplayName="test folder 2 device 3" DisableCredsSPSupport="0" />
</RDPConnections>       
</RDPConnections>       

<RDPConnection MachineName="192.168.0.4" DisplayName="device 4"/>

 <RDPConnection MachineName="machine5" DisplayName="Machine 5" CmdLine="C:\Program Files\RealVNC\VNC4\vncviewer.exe" CmdArgs="192.168.1.250" />
  <RDPConnection MachineName="machine6" DisplayName="Machine 6" CmdLine="\\server\rdpmanager\mailserver.vnc" />

<RDPMultiConnection DisplayName="MultiConnect" MachineNames="tst1;tst2;tst3a"/>
 <RDPMultiConnection DisplayName="GroupTstConnect" GroupName="Folder 1"/>

</RDPConnections>


** Note in the example above the use of CmdLine. We put URLs in there (say, to bring up a vmware sever console). We also put VNC files
and PCAnywhere files in there, so you can start them up from RDPManager. Put any arguments in the CmdArgs option. Any other option when
you use CmdLine are ignored.
