public static void Run(string?name, FileInfo?path, string?arguments, bool?admin, bool?allUsers) { if (name == null || (path == null || !path.Exists) || arguments == null || admin == null || allUsers == null) { var steps = GetWizardSteps(name, path, arguments, admin, allUsers); steps = ConsoleStepWizard.UserWizard("Let's guide you through settings up a new startup program", steps); System.Console.WriteLine(); var startupProgram = ParseUserInfo(steps, name, path, arguments, admin, allUsers); ValidateInformationWithUser(startupProgram); System.Console.WriteLine(); ConsoleColorHelper.ConsoleWriteColored(ConsoleColor.Green, "Does this look correct? y/n: "); var correct = ConsoleStepWizard.PromptUserForBool("y", "n", "Does this look correct? y/n: "); if (correct) { ExecuteHandler(startupProgram); } else { System.Console.WriteLine("Sorry to hear that, please try again"); } } else { var startupProgram = ParseUserInfo(new List <ConsoleStep>(), name, path, arguments, admin, allUsers); ExecuteHandler(startupProgram); } }
public static IEnumerable <ConsoleColorOutput> Run(StartupProgram program) { var existingPrograms = ListCommandHandler.Run().Programs.ToList(); var programAlreadyStarts = existingPrograms.FirstOrDefault(x => x.Path.Contains(program.File.FullName, StringComparison.OrdinalIgnoreCase) && !x.Disabled); var nameInUseBy = existingPrograms.FirstOrDefault(x => x.Name.Equals(program.Name, StringComparison.OrdinalIgnoreCase)); if (nameInUseBy != null) { return(new [] { new ConsoleColorOutput(WriteMode.Write, program.Name, ConsoleColor.Yellow), new ConsoleColorOutput(WriteMode.Writeline, " is already in use, please try again with a different name", ConsoleColor.Red), }); } if (programAlreadyStarts != null) { var messages = new [] { new ConsoleColorOutput(WriteMode.Write, program.File.Name, ConsoleColor.Yellow), new ConsoleColorOutput(WriteMode.Writeline, " already starts with windows", ConsoleColor.Red), new ConsoleColorOutput(WriteMode.Write, "Want to add another instance of it to startup? y/n: "), }; ConsoleOutputWriter.WriteToConsole(messages); var userWantsToContinue = ConsoleStepWizard.PromptUserForBool("y", "n", $"Want to add another? y/n: "); if (!userWantsToContinue) { return(new List <ConsoleColorOutput>()); } } if (program.AllUsers || program.Administrator) { if (!WindowsIdentityService.IsElevated()) { return(new [] { new ConsoleColorOutput(WriteMode.Writeline, "This requires you run the command as administrator", ConsoleColor.Red) }); } } //Current user only programs requires a schedule task to run as Administrator if (program.Administrator && !program.AllUsers) { TaskSchedulerService.AddProgramToStartup(program); } else { RegistryService.AddProgramToStartup(program); } return(new [] { new ConsoleColorOutput(WriteMode.Write, "Added "), new ConsoleColorOutput(WriteMode.Write, program.Name, ConsoleColor.Yellow), new ConsoleColorOutput(WriteMode.Writeline, " to startup") }); }
public static IEnumerable <ConsoleColorOutput> Run(string name, bool confirm) { var program = ListCommandHandler.Run().Programs.FirstOrDefault(x => x.Name.Equals(name, StringComparison.OrdinalIgnoreCase)); if (program == null) { return(new [] { new ConsoleColorOutput(WriteMode.Write, "Could not find a program with name ", ConsoleColor.Red), new ConsoleColorOutput(WriteMode.Writeline, name, ConsoleColor.Yellow), }); } if (program.RequireAdministrator && !WindowsIdentityService.IsElevated()) { return(new [] { new ConsoleColorOutput(WriteMode.Write, $"To modify settings for ", ConsoleColor.Red), new ConsoleColorOutput(WriteMode.Write, program.Name, ConsoleColor.Yellow), new ConsoleColorOutput(WriteMode.Writeline, " you need to run the command with administrator (sudo)", ConsoleColor.Red), }); } if (!confirm) { var message = $"Are you sure you want to remove '{program.Name}' y/n: "; var messages = new [] { new ConsoleColorOutput(WriteMode.Write, message), }; ConsoleOutputWriter.WriteToConsole(messages); var confirmation = ConsoleStepWizard.PromptUserForBool("y", "n", message); if (!confirmation) { return(new List <ConsoleColorOutput>()); } } switch (program.Type) { case Models.StartupList.StartupType.TaskScheduler: TaskSchedulerService.RemoveProgramFromStartup(program.Name); break; case Models.StartupList.StartupType.Shortcut: DirectoryService.RemoveProgramFromStartup(program); break; case Models.StartupList.StartupType.Regedit: RegistryService.RemoveProgramFromStartup(program); break; } return(new [] { new ConsoleColorOutput(WriteMode.Write, program.Name, ConsoleColor.Yellow), new ConsoleColorOutput(WriteMode.Writeline, " has been removed"), }); }