Пример #1
0
        public override void Run()
        {
            if (!Validate())
            {
                return;
            }

            var rdcPath = CreatePath(Settings.Default.RdcPath);

            //Убиваем все, что движется
            KillProcessByFileName(Path.GetFileName(rdcPath));

            //Копируем шаблон
            string text;

            using (var fs = File.Open(GetRdpFileTemplateName(), FileMode.Open, FileAccess.Read, FileShare.ReadWrite))
            {
                using (var sr = new StreamReader(fs, Encoding.Unicode))
                {
                    text = sr.ReadToEnd();
                }
            }

            //Валидация
            if (!ValidateRdpFileTemplate(text))
            {
                return;
            }

            var rdpf = new StringBuilder();

            rdpf.AppendLine(string.Format("{0}:s:{1}", ServerAttributeName, Settings.Default.Server));
            rdpf.AppendLine(string.Format("{0}:s:{1}", DomainAttributeName, Settings.Default.Domain));
            rdpf.AppendLine(string.Format("{0}:s:{1}", UserNameAttributeName, Login));
            rdpf.AppendLine(string.Format("{0}{1}{2}", PasswordAttributeName, PasswordTypeAttributeName,
                                          DPAPI.RdpEncrypt(Pwd)));

            var templateTxt = text.Trim();

            while (templateTxt.EndsWith("\n") || templateTxt.EndsWith("\r"))
            {
                templateTxt = templateTxt.Substring(0, templateTxt.Length - 1);
            }

            rdpf.AppendLine(templateTxt);

            using (var fs = File.Open(RdpFileName, FileMode.Create, FileAccess.Write, FileShare.ReadWrite))
            {
                using (var sw = new StreamWriter(fs, Encoding.Unicode))
                {
                    sw.Write(rdpf.ToString());
                }
            }

            //Стартуем процесс
            Start(new ProcessStartInfo(RdpFileName, string.Empty)
            {
                Arguments        = Path.GetFileName(RdpFileName),
                WorkingDirectory = Path.GetDirectoryName(RdpFileName),
                UseShellExecute  = true,
                Verb             = "open"
            });
        }