static int Worker(Params commandParams) { string domainName = null; if (commandParams.User.Contains("\\")) { string[] pairs = commandParams.User.Split('\\'); domainName = pairs[0]; commandParams.User = pairs[1]; if (domainName == ".") { accountType = IdentityType.LocalComputerAdmin; } } if (commandParams.NoLocalProfile) { dwLogonFlags = LogonFlags.LOGON_NETCREDENTIALS_ONLY; } try { PasswordInfo pwdInfo = null; switch (accountType) { case IdentityType.ManagedDomainAccount: pwdInfo = PdsWrapper.GetPassword(null, commandParams.User, accountType, false, false); break; default: pwdInfo = PdsWrapper.GetPassword(null, System.Environment.GetEnvironmentVariable("COMPUTERNAME"), accountType, false, false); break; } StartupInfo si = new StartupInfo(); si.cb = Marshal.SizeOf(si); ProcessInformation pi = new ProcessInformation(); bool rslt = Native.CreateProcessWithLogonW(commandParams.User, domainName, pwdInfo.Password, (uint)dwLogonFlags, null, commandParams.ProgramPath, (uint)(CreationFlags.CREATE_NEW_PROCESS_GROUP | CreationFlags.ABOVE_NORMAL_PRIORITY_CLASS), 0, null, ref si, out pi); if (!rslt) { throw new System.ComponentModel.Win32Exception(Native.GetLastError()); } } catch (PDSException ex) { Console.WriteLine($"ERROR: {ex.Message}"); return(-1); } catch (System.ComponentModel.Win32Exception ex) { Console.WriteLine($"ERROR: Failed to start process, Win32 return code: {ex.NativeErrorCode.ToString("X2")}"); return(-2); } catch (Exception ex) { Console.WriteLine($"ERROR: {ex.Message}"); return(-3); } return(0); }
static void Main(string[] args) { try { if (args.Length > 0) { Console.WriteLine(string.Format("Getting the password for computer {0}", args[0])); AdmPwd.Types.PasswordInfo pwdData = PdsWrapper.GetPassword(ForestName: string.Empty, Identity: args[0], Type: IdentityType.LocalComputerAdmin, IncludePasswordHistory: false, IsDeleted: false); Console.WriteLine(string.Format("Password: {0}", pwdData.Password)); Console.WriteLine(string.Format("Expires: {0}", pwdData.ExpirationTimestamp.ToString())); Console.Write("Resetting password ... "); //request immediate password reset PdsWrapper.ResetPassword(ForestName: string.Empty, Identity: args[0], Type: IdentityType.LocalComputerAdmin, WhenEffective: DateTime.MinValue); Console.WriteLine("done"); } else { Console.WriteLine("ERROR: You must pass computer name as parameter"); } } catch (PDSException ex) { Console.WriteLine(ex.Message); } catch (Exception ex) { Console.WriteLine(ex.Message); } }
static void Main(string[] args) { try { Console.WriteLine(string.Format("Getting the password for computer {0}", args[0])); AdmPwd.Types.PasswordInfo pwdData = PdsWrapper.GetPassword(forestName: string.Empty, ComputerName: args[0], IncludePasswordHistory: false); Console.WriteLine(string.Format("Password: {0}", pwdData.Password)); Console.WriteLine(string.Format("Expires: {0}", pwdData.ExpirationTimestamp.ToString())); Console.Write("Resetting password ... "); PdsWrapper.ResetPassword(forestName: string.Empty, computerName: args[0], whenEffective: DateTime.Now); Console.WriteLine("done"); } catch (FaultException ex) { Console.WriteLine(ex.Message); } }
static void Main(string[] args) { Application.EnableVisualStyles(); Application.SetCompatibleTextRenderingDefault(false); string adminAccountName = null; string server = null; string domainName = null; ushort port = 3389; foreach (string arg in args) { if (arg.StartsWith("/user:"******"/server:", StringComparison.CurrentCultureIgnoreCase)) { server = arg.Substring(8); continue; } if (arg.StartsWith("/port:", StringComparison.CurrentCultureIgnoreCase)) { ushort.TryParse(arg.Substring(6), out port); continue; } if (arg.StartsWith("/?", StringComparison.CurrentCultureIgnoreCase)) { Usage(); return; } } if (server == null) { Usage(); return; } PasswordInfo pwdInfo = null; try { //user name to use if (adminAccountName.Contains('\\')) { //domain\sAMAccountName string[] pairs = adminAccountName.Split('\\'); domainName = pairs[0]; adminAccountName = pairs[1]; pwdInfo = PdsWrapper.GetManagedAccountPassword(null, adminAccountName, false); } else if (adminAccountName.Contains('@')) { //upn pwdInfo = PdsWrapper.GetManagedAccountPassword(null, adminAccountName, false); } else { //local account domainName = server; if (adminAccountName == null) { //default admin name adminAccountName = "administrator"; } pwdInfo = PdsWrapper.GetLocalAdminPassword(null, server, false, false); } } catch (Exception ex) { MessageBox.Show($"Failed to retrieve password for account {adminAccountName}\nError: {ex.Message}", "Error", MessageBoxButtons.OK, MessageBoxIcon.Error); return; } try { var form = new MainForm(); var cfg = new Configuration(); Int64 windowSize = cfg.LastWindowSize; if (windowSize > 0) { form.SetSize(windowSize); } form.SetCredentials(adminAccountName, domainName, pwdInfo.Password); form.SetServerName(server, port); Application.Run(form); cfg.LastWindowSize = form.GetSize(); cfg.Update(); } catch (Exception) { //do nothing now } }
static void Main(string[] args) { Application.EnableVisualStyles(); Application.SetCompatibleTextRenderingDefault(false); string adminAccountName = null; string server = null; string domainName = null; ushort port = 3389; foreach (string arg in args) { if (arg.StartsWith("/user:"******"/server:", StringComparison.CurrentCultureIgnoreCase)) { server = arg.Substring(8); continue; } if (arg.StartsWith("/port:", StringComparison.CurrentCultureIgnoreCase)) { ushort.TryParse(arg.Substring(6), out port); continue; } if (arg.StartsWith("/?", StringComparison.CurrentCultureIgnoreCase)) { Usage(); return; } } if (adminAccountName == null || server == null) { Usage(); return; } if (adminAccountName.Contains("\\")) { string[] pairs = adminAccountName.Split('\\'); domainName = pairs[0]; adminAccountName = pairs[1]; } string password = null; try { PasswordInfo pwdInfo = PdsWrapper.GetManagedAccountPassword(null, adminAccountName, false); password = pwdInfo.Password; } catch (Exception ex) { MessageBox.Show($"Failed to retrieve password for account {adminAccountName}\nError: {ex.Message}", "Error", MessageBoxButtons.OK, MessageBoxIcon.Error); return; } try { var form = new Form1(); form.SetCredentials(adminAccountName, domainName, password); form.SetServerName(server, port); Application.Run(form); } catch (Exception) { //do nothing now } }
static void Main(string[] args) { string adminAccountName = null; string pathToExecutable = null; string domainName = null; LogonFlags dwLogonFlags = LogonFlags.LOGON_WITH_PROFILE; foreach (string arg in args) { if (arg.StartsWith("/user:"******"/path:", StringComparison.CurrentCultureIgnoreCase)) { pathToExecutable = arg.Substring(6); continue; } if (arg.StartsWith("/noLocalProfile", StringComparison.CurrentCultureIgnoreCase)) { dwLogonFlags = LogonFlags.LOGON_NETCREDENTIALS_ONLY; continue; } if (arg.StartsWith("/?", StringComparison.CurrentCultureIgnoreCase)) { Usage(); return; } } if (adminAccountName == null || pathToExecutable == null) { Usage(); return; } if (adminAccountName.Contains("\\")) { string[] pairs = adminAccountName.Split('\\'); domainName = pairs[0]; adminAccountName = pairs[1]; } try { PasswordInfo pwdInfo = PdsWrapper.GetManagedAccountPassword(null, adminAccountName, false); StartupInfo si = new StartupInfo(); si.cb = Marshal.SizeOf(si); ProcessInformation pi = new ProcessInformation(); bool rslt = Native.CreateProcessWithLogonW(adminAccountName, domainName, pwdInfo.Password, (uint)dwLogonFlags, null, pathToExecutable, (uint)(CreationFlags.CREATE_NEW_PROCESS_GROUP | CreationFlags.ABOVE_NORMAL_PRIORITY_CLASS), 0, null, ref si, out pi); if (!rslt) { throw new System.ComponentModel.Win32Exception(Native.GetLastError()); } } catch (PDSException ex) { Console.WriteLine($"ERROR: {ex.Message}"); } catch (System.ComponentModel.Win32Exception ex) { Console.WriteLine($"ERROR: Failed to start process, Win32 return code: {ex.NativeErrorCode.ToString("X2")}"); } catch (Exception ex) { Console.WriteLine($"ERROR: {ex.Message}"); } }