Click here to Skip to main content
12,752,054 members (31,468 online)
Click here to Skip to main content
Add your own
alternative version


296 bookmarked
Posted 1 Aug 2007

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

You may also be interested in...

Comments and Discussions

GeneralRe: How to access an IP that is behind the NAT router ? Pin
Joe Escalona26-Sep-12 8:35
memberJoe Escalona26-Sep-12 8:35 
Generalproblem when auto connecting Pin
atropos073-Mar-10 22:24
memberatropos073-Mar-10 22:24 
GeneralGood Work Pin
Nezam Ahamed22-Feb-10 19:37
memberNezam Ahamed22-Feb-10 19:37 
Generalbeautiful! Pin
kanbang12-Aug-09 0:03
memberkanbang12-Aug-09 0:03 
Questioncan u please tell now i am getting this error after change AxMsRdpClient5 to AxMsRdpClient2 Pin
ravileeladhar20-Jul-09 8:42
memberravileeladhar20-Jul-09 8:42 
GeneralException ::Error 8 'AxMSTSCLib.AxMsRdpClient4.AdvancedSettings5' is not supported by the language Palantir Pin
ravileeladhar9-Jul-09 8:40
memberravileeladhar9-Jul-09 8:40 
GeneralRe: Exception ::Error 8 'AxMSTSCLib.AxMsRdpClient4.AdvancedSettings5' is not supported by the language Palantir Pin
AKGhosh19-Jul-09 21:25
memberAKGhosh19-Jul-09 21:25 
GeneralNice Article Pin
Vuyiswa Maseko4-Mar-09 22:14
memberVuyiswa Maseko4-Mar-09 22:14 
GeneralNeed your help! Error:Class not registered... Pin
Member 388611715-Feb-09 15:50
memberMember 388611715-Feb-09 15:50 
GeneralError with mstscax.dll Pin
Member 393854815-Jan-09 18:33
memberMember 393854815-Jan-09 18:33 
Questionerror!!!!. what pas? Pin
AlejandroDG17-Oct-08 20:42
memberAlejandroDG17-Oct-08 20:42 
AnswerRe: error!!!!. what pas? Pin
ric43215-Nov-09 5:53
memberric43215-Nov-09 5:53 
Generalplease clear my doubt... [modified] Pin
sgsiva18-Sep-08 0:44
membersgsiva18-Sep-08 0:44 
AnswerRe: please clear my doubt... Pin
Jim Weiler19-Nov-08 19:33
memberJim Weiler19-Nov-08 19:33 
If you are meaning you want to control the screen that is visible on the remote machine, while the user is not logged off, this can't be done with remote desktop. You would want something like VNC for that, or figure out how (if its possible) to use remote assistance through code instead of remote desktop.

If you are meaning you want to connect to a remote machine, creating a new session, without logging off the active user, the remote machine needs to be configured for it. I have only done it once and it was using Windows 2000 advanced server. I think it may be part of terminal services. But at any rate, this would be an issue of the remote machine and not having anything to do with the code of this app.


GeneralRe: please clear my doubt... Pin
Kevin James10-Feb-09 23:20
memberKevin James10-Feb-09 23:20 
Questionpocket pc version? Pin
Jeff Dafing17-Aug-08 9:10
memberJeff Dafing17-Aug-08 9:10 
QuestionBuild errors with VS 2005 Pin
curiousharry22-Sep-07 16:16
membercuriousharry22-Sep-07 16:16 
AnswerRe: Build errors with VS 2005 Pin
GrantS23-Oct-07 23:40
memberGrantS23-Oct-07 23:40 
GeneralGreat.. Pin
Murat Firat12-Sep-07 8:11
memberMurat Firat12-Sep-07 8:11 
QuestionQuery Pin
Rajendrakumara24-Aug-07 21:15
memberRajendrakumara24-Aug-07 21:15 
GeneralWorked at office, error at home Pin
zafer_arsay13-Aug-07 23:30
memberzafer_arsay13-Aug-07 23:30 
QuestionWhat is in this name? Pin
SAKryukov9-Aug-07 13:02
memberSAKryukov9-Aug-07 13:02 
AnswerRe: What is in this name? Pin
Sacha Barber9-Aug-07 21:48
memberSacha Barber9-Aug-07 21:48 
AnswerRe: What is in this name? Pin
pauljenkins71425-Mar-10 23:20
memberpauljenkins71425-Mar-10 23:20 
GeneralAlready better than MS RDP client, yet needs improvements [modified] Pin
SAKryukov9-Aug-07 13:00
memberSAKryukov9-Aug-07 13:00 
GeneralSome fix... [modified] Pin
cacalex8-Aug-07 4:07
membercacalex8-Aug-07 4:07 
Generalcool improvement... Pin
cacalex7-Aug-07 7:26
membercacalex7-Aug-07 7:26 
NewsClipboard support Pin
Vance Kessler7-Aug-07 6:24
memberVance Kessler7-Aug-07 6:24 
GeneralGood job and ... good name Pin
Crusty Applesniffer7-Aug-07 1:22
memberCrusty Applesniffer7-Aug-07 1:22 
GeneralHave you seen.... Pin
Peter Tewkesbury7-Aug-07 0:01
memberPeter Tewkesbury7-Aug-07 0:01 
AnswerRe: Have you seen.... Pin
Isil Orhanel7-Aug-07 0:32
memberIsil Orhanel7-Aug-07 0:32 
GeneralRe: Have you seen.... Pin
Vishal.Doshi7-Aug-07 6:25
memberVishal.Doshi7-Aug-07 6:25 
GeneralRe: Have you seen.... Pin
dherv1-Oct-07 10:17
memberdherv1-Oct-07 10:17 
GeneralRe: Have you seen.... Pin
Danilo Corallo19-Oct-07 2:19
memberDanilo Corallo19-Oct-07 2:19 
QuestionAnother exception, do I need TSC 6.0? Pin
NickViz6-Aug-07 22:31
memberNickViz6-Aug-07 22:31 
AnswerRe: Another exception, do I need TSC 6.0? Pin
Isil Orhanel7-Aug-07 0:14
memberIsil Orhanel7-Aug-07 0:14 
GeneralRe: Another exception, do I need TSC 6.0? Pin
liangpz_200013-Sep-07 20:38
memberliangpz_200013-Sep-07 20:38 
AnswerRe: Another exception, do I need TSC 6.0? Pin
Carlos Solorzano6-Mar-08 11:27
memberCarlos Solorzano6-Mar-08 11:27 
GeneralRe: Another exception, do I need TSC 6.0? Pin
wongyeam31-Jan-09 21:37
memberwongyeam31-Jan-09 21:37 
Generalidenty Pin
identy6-Aug-07 13:35
memberidenty6-Aug-07 13:35 
Questionhow can I connect to console? Pin
margiex6-Aug-07 4:32
membermargiex6-Aug-07 4:32 
AnswerRe: how can I connect to console? Pin
Isil Orhanel6-Aug-07 23:22
memberIsil Orhanel6-Aug-07 23:22 
QuestionHow to use it? Pin
BarCode3-Aug-07 0:00
memberBarCode3-Aug-07 0:00 
AnswerRe: How to use it? Pin
Isil Orhanel6-Aug-07 23:40
memberIsil Orhanel6-Aug-07 23:40 
GeneralWonderful! Pin
Eylon Yogev.2-Aug-07 10:10
memberEylon Yogev.2-Aug-07 10:10 
GeneralSuperb Pin
rippo2-Aug-07 8:58
memberrippo2-Aug-07 8:58 
GeneralGood work... Pin
fadee2-Aug-07 7:07
memberfadee2-Aug-07 7:07 
GeneralNice article - Superb title! Pin
Iain Clarke2-Aug-07 5:17
memberIain Clarke2-Aug-07 5:17 
Generalvery good Pin
Luiz_Augusto2-Aug-07 4:15
memberLuiz_Augusto2-Aug-07 4:15 
GeneralException Pin
E.Glashagen2-Aug-07 1:28
memberE.Glashagen2-Aug-07 1:28 

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

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

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