Click here to Skip to main content
11,410,129 members (61,176 online)
Click here to Skip to main content

Palantir - Remote Desktop Manager

, 6 Aug 2007 CPOL
Rate this:
Please Sign up or sign in to vote.
Palantir is an application that allows users to manage remote desktop connections in one window. It also allows users to save existing connections for later use.
Screenshot - palantir.jpg

Screenshot - palantir3.jpg


Palantir is an application that allows users to manage remote desktop connections in one window. It also allows users to save existing connections for later use.


The remote desktop connections are managed with Microsoft RDP Client control. This control has all of the properties such as Server, UserName, Domain, etc. in order to set up a remote desktop connection. In addition to these properties, sharing printers, disk drives or color depth of the remote desktop can be managed via RDP Client control. Palantir enables users to create a remote desktop connection and save connection settings for later use. Users can also choose to start a remote desktop connection automatically when the application starts.

The settings can be saved into a file and restored from a setting file. Users can also connect to a computer via console. The application has a class named Machine that stores a remote desktop connection's properties. All of the remote connections created by user is stored in application's .settings file. This setting file has a property setting named MyMachine and its type is string. This property is converted into Hashtable while getting the settings. Palantir's solution consists of four projects which are GUI, Helper, BusinessObjects and a setup project.

Using the Code

The remote desktop connections are retrieved by the function below:

public List<Machine> GetRemoteDesktops()         
    List<Machine> lstMachine = new List<Machine>();             
    if (Settings.Default.MyMachine != "")             
        Hashtable ht = 
        foreach (DictionaryEntry de in ht)                     
            Machine insMachine = (Machine)de.Value;                     
    lstMachine.Sort(delegate(Machine m1, Machine m2) 
        return m1.RemoteDesktopConnectionName.CompareTo(
    return lstMachine;         

As seen in the code, this function deserializes the setting named MyMachine into a hashtable and inserts each dictionary entry in the hashtable into a list and returns the list. A remote desktop connection is saved and edited by the function below:

public bool SaveRemoteDesktop(Machine parMachine, bool openedForEdit)   
    if (Settings.Default.MyMachine == "")
        Hashtable ht = new Hashtable(); 
        Settings.Default.MyMachine = BinarySerializer.ToBinary(ht); 
    Hashtable ht1 = 
    if (!parMachine.SavePassword) 
        parMachine.Password = "";             
    if (!openedForEdit)             
        foreach (DictionaryEntry de in ht1)                 
            if (((Machine)de.Value).RemoteDesktopConnectionName == 
                MessageBox.Show("There is already a 
                                    remote connection with the same name.");                         
                return false;                     
    ht1[parMachine.RemoteDesktopConnectionName] = parMachine; 
    Settings.Default.MyMachine = BinarySerializer.ToBinary(ht1);
    return true; 

If there's no currently saved remote desktop connection, we create a new hashtable and then serialize and save the settings file. After that, we deserialize the settings parameter into a hashtable and after checking if there's another connection with the same name, we save the remote desktop connection with the function's parameter Machine object. The methods below set the RDP Client control's settings and connect to the remote desktop which is passed as parameter.

private void SetRdpClientProperties(Machine parMachine)   
    rdpc.Server = parMachine.MachineName;             
    rdpc.UserName = parMachine.UserName;             
    rdpc.Domain = parMachine.DomainName;             
    if (parMachine.Password != "")             
        rdpc.AdvancedSettings5.ClearTextPassword = parMachine.Password;   
    rdpc.AdvancedSettings5.RedirectDrives = parMachine.ShareDiskDrives;     
    rdpc.AdvancedSettings5.RedirectPrinters = parMachine.SharePrinters; 
    rdpc.ColorDepth = (int)parMachine.ColorDepth;             
    rdpc.Dock = DockStyle.Fill;           
public void Connect(Machine parMachine)         
public void ConnectViaConsole(Machine parMachine)         
    rdpc.AdvancedSettings5.ConnectToServerConsole = true;    


For bug reports and suggestions, feel free to contact me at


This article, along with any associated source code and files, is licensed under The Code Project Open License (CPOL)


About the Author

Isil Orhanel
Web Developer
Turkey Turkey
No Biography provided

Comments and Discussions

GeneralError with mstscax.dll PinmemberMember 393854815-Jan-09 18:33 
Questionerror!!!!. what pas? PinmemberAlejandroDG17-Oct-08 20:42 
AnswerRe: error!!!!. what pas? Pinmemberric43215-Nov-09 5:53 
Generalplease clear my doubt... [modified] Pinmembersgsiva18-Sep-08 0:44 
AnswerRe: please clear my doubt... PinmemberJim Weiler19-Nov-08 19:33 
GeneralRe: please clear my doubt... PinmemberKevin James10-Feb-09 23:20 
Questionpocket pc version? PinmemberJeff Dafing17-Aug-08 9:10 
QuestionBuild errors with VS 2005 Pinmembercuriousharry22-Sep-07 16:16 
Using Visual Studio 2005, I loaded Palantir.sln and did a rebuild all and I get some warnings, but worse, I get these errors. Note when the solution was first loaded, it came up with a msg about source control bindings and I chose to remove them permanently. Is everyone all excited about this app because they are simply using it, or has anyone tried to look at the code and actuallyy build it? The solution has four projects and I did not change anything in the build order. When I use the object completion feature on the AxMSTSCLib. obj, I see AxMsRdpClient1, AxMsRdpClient2, and AxMsRdpClient3 -- but not AxMsRdpClient4 and not AxMsRdpClient5.

Below are the errors. Should I have used Visual Studio 2003?

Thanks in advance,


Error 7 'AxMSTSCLib.AxMsRdpClient4.AdvancedSettings5' is not supported by the language C:\tempfoo\Palantir\Palantir\ControlLib\RemoteDesktopControllerTabPage.cs 53 22 Palantir
Error 8 'AxMSTSCLib.AxMsRdpClient4.AdvancedSettings5' is not supported by the language C:\tempfoo\Palantir\Palantir\ControlLib\RemoteDesktopControllerTabPage.cs 55 18 Palantir
Error 9 'AxMSTSCLib.AxMsRdpClient4.AdvancedSettings5' is not supported by the language C:\tempfoo\Palantir\Palantir\ControlLib\RemoteDesktopControllerTabPage.cs 56 18 Palantir
Error 10 'AxMSTSCLib.AxMsRdpClient4.AdvancedSettings5' is not supported by the language C:\tempfoo\Palantir\Palantir\ControlLib\RemoteDesktopControllerTabPage.cs 70 18 Palantir

AnswerRe: Build errors with VS 2005 PinmemberGrantS23-Oct-07 23:40 
GeneralGreat.. PinmemberMurat Firat12-Sep-07 8:11 
QuestionQuery PinmemberRajendrakumara24-Aug-07 21:15 
GeneralWorked at office, error at home Pinmemberzafer_arsay13-Aug-07 23:30 
QuestionWhat is in this name? PinmemberSAKryukov9-Aug-07 13:02 
AnswerRe: What is in this name? PinmemberSacha Barber9-Aug-07 21:48 
AnswerRe: What is in this name? Pinmemberpauljenkins71425-Mar-10 23:20 
GeneralAlready better than MS RDP client, yet needs improvements [modified] PinmemberSAKryukov9-Aug-07 13:00 
GeneralSome fix... [modified] Pinmembercacalex8-Aug-07 4:07 
Generalcool improvement... Pinmembercacalex7-Aug-07 7:26 
NewsClipboard support PinmemberVance Kessler7-Aug-07 6:24 
GeneralGood job and ... good name PinmemberCrusty Applesniffer7-Aug-07 1:22 
GeneralHave you seen.... PinmemberPeter Tewkesbury7-Aug-07 0:01 
AnswerRe: Have you seen.... PinmemberIsil Orhanel7-Aug-07 0:32 
GeneralRe: Have you seen.... PinmemberVishal.Doshi7-Aug-07 6:25 
GeneralRe: Have you seen.... Pinmemberdherv1-Oct-07 10:17 
GeneralRe: Have you seen.... PinmemberDanilo Corallo19-Oct-07 2:19 

General General    News News    Suggestion Suggestion    Question Question    Bug Bug    Answer Answer    Joke Joke    Rant Rant    Admin Admin   

Use Ctrl+Left/Right to switch messages, Ctrl+Up/Down to switch threads, Ctrl+Shift+Left/Right to switch pages.

| Advertise | Privacy | Terms of Use | Mobile
Web03 | 2.8.150414.5 | Last Updated 7 Aug 2007
Article Copyright 2007 by Isil Orhanel
Everything else Copyright © CodeProject, 1999-2015
Layout: fixed | fluid