Example #1
0
        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);
            }
        }
Example #2
0
        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")
            });
        }
Example #3
0
        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"),
            });
        }