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); }
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(); }