public void Launch(Client c)
 {
     try
     {
         rdpFile = CreateRdpFile(c);
         LaunchRdc();
     }
     catch (Exception e)
     {
         System.Windows.MessageBox.Show(e.Message);
     }
 }
Exemple #2
0
        public void Add(string group, ProtectedStringDictionary dict)
        {
            Client client = new Client(dict);

            if (!clientList.ContainsKey(group))
            {
                clientList.Add(group, new List<Client> { client });
            }
            else
            {
                clientList[group].Add(client);
                clientList[group] = clientList[group].OrderBy(x => x.GetTitle()).ToList();
            }
        }
        private string CreateRdpFile(Client c)
        {
            List<string> contents = new List<string>() {
                "screen mode id:i:2",
                "use multimon:i:0",
                "session bpp:i:16",
                "compression:i:1",
                "keyboardhook:i:2",
                "audiocapturemode:i:0",
                "videoplaybackmode:i:1",
                "connection type:i:4",
                "displayconnectionbar:i:1",
                "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",
                "bitmapcachepersistenable:i:1",
                "audiomode:i:0",
                "redirectprinters:i:1",
                "redirectcomports:i:0",
                "redirectsmartcards:i:1",
                "redirectclipboard:i:1",
                "redirectposdevices:i:0",
                "redirectdirectx:i:1",
                "autoreconnection enabled:i:1",
                "authentication level:i:2",
                "prompt for credentials:i:0",
                "negotiate security layer:i:1",
                "remoteapplicationmode:i:0",
                "alternate shell:s:",
                "shell working directory:s:",
                "gatewayhostname:s:",
                "gatewayusagemethod:i:4",
                "gatewaycredentialssource:i:4",
                "gatewayprofileusagemethod:i:0",
                "promptcredentialonce:i:1",
                "use redirection server name:i:0",
                "drivestoredirect:s:"
            };

            contents.Add("winposstr:s:" + WindowPosition());
            contents.Add("desktopwidth:i:" + SystemParameters.VirtualScreenWidth.ToString());
            contents.Add("desktopheight:i:" + SystemParameters.VirtualScreenHeight.ToString());
            contents.Add("full address:s:" + FullAddress(c, c.GetUrl()));
            contents.Add("username:s:" + c.GetUserName());
            contents.Add("password 51:b:" + RdpPassword.EncryptPassword(c.GetPassword()));

            string rdpFile = Path.Combine(Path.GetTempPath(), UniqueConnectionFileName(c.GetSafeTitle(), c.GetUrl()));

            try
            {
                File.WriteAllText(rdpFile, String.Join(Environment.NewLine, contents.ToArray()));
            }
            catch (Exception e)
            {
                System.Windows.MessageBox.Show(e.Message);
                throw e;
            }

            return rdpFile;
        }
        /// <summary>
        /// Return the full address including any selected options.
        /// </summary>
        /// <param name="client">Client with settings to check</param>
        /// <param name="url">URL to start with</param>
        /// <returns></returns>
        private string FullAddress(Client client, string url)
        {
            List<string> fullAddress = new List<string>() { url };

            if (client.settings.Admin)
            {
                fullAddress.Add("/admin");
            }

            if (client.settings.Public)
            {
                fullAddress.Add("/public");
            }

            return String.Join(" ", fullAddress);
        }
        private void ToggleOptions(bool enabled, Client client)
        {
            ToggleOptions(enabled);

            CheckBoxAdmin.IsChecked = client.settings.Admin;
            CheckBoxPublic.IsChecked = client.settings.Public;
        }