Beispiel #1
0
        public static System.Net.NetworkCredential GetCredential(string serverip)
        {
            System.Net.NetworkCredential credentials = null;
            BaseCredentialsPrompt        prompt      = null;

            if (IsWinVistaOrHigher())
            {
                prompt = new VistaPrompt();
                Console.WriteLine("win7");
            }
            else
            {
                prompt = new XPPrompt()
                {
                    Target = serverip
                };

                Console.WriteLine("xp");
            }
            prompt.SaveChecked      = true;
            prompt.ShowSaveCheckBox = true;
            prompt.Title            = @"指定已授权的 域(计算机)\用户";
            try
            {
                if (prompt.ShowDialog() == DialogResult.OK)
                {
                    credentials = new System.Net.NetworkCredential(prompt.Username, prompt.SecurePassword);
                    if (prompt.SaveChecked)
                    {
                        var cm = new Credential()
                        {
                            Target          = serverip,
                            Type            = CredentialType.DomainPassword, //windows 凭证 Generic 普通凭证
                            PersistanceType = PersistanceType.Enterprise,    //永久
                            Username        = prompt.Username,
                            SecurePassword  = prompt.SecurePassword
                        };
                        cm.Save();
                    }
                    return(credentials);
                }
            }
            catch (Exception ex)
            {
                Console.WriteLine(ex.GetBaseException());
            }

            return(null);
        }
Beispiel #2
0
        private void StartNewProcess(BaseCredentialsPrompt promptResult)
        {
            string username, domain;

            var splitCheck = promptResult.Username.Split('\\');

            if (splitCheck.Length > 1)
            {
                username = splitCheck[1];
                domain   = splitCheck[0];
            }
            else
            {
                username = splitCheck[0];
                domain   = null;
            }

            var commandName = $"{Process.GetCurrentProcess().MainModule?.FileName} --machine={machineHostname}";

            RunAs.StartProcess(username, domain, promptResult.Password, RunAs.LogonFlags.NetworkCredentialsOnly, null, commandName, RunAs.CreationFlags.NewProcessGroup, null);

            Application.Exit();
        }