public static void BackupAndRemove(string[] servicesToRemove, IUserInterface ui, ServiceRemovalMode removalMode = ServiceRemovalMode.ServiceControl) { var serviceRemover = new ServiceRemover(servicesToRemove, ui); string[] actualBackuppedServices = serviceRemover.PerformBackup(); serviceRemover.PerformRemoval(actualBackuppedServices, removalMode); }
/* * Performs the removal of the services by using either sc or reg command, according to the passed parameter * (default is sc). * reg command allows to remove unstoppable system services, like Windows Defender ones. */ private void PerformRemoval(string[] backuppedServices, ServiceRemovalMode removalMode) { if (removalMode == ServiceRemovalMode.ServiceControl) { RemoveServicesUsingSC(backuppedServices); } else if (removalMode == ServiceRemovalMode.Registry) { RemoveServicesByDeletingRegistryKeys(backuppedServices); } }
/* * Performs the removal of the services by using either sc or reg command, according to the passed parameter * (default is sc). * reg command allows to remove unstoppable system services, like Windows Defender ones. */ public void PerformRemoval(ServiceRemovalMode removalMode = ServiceRemovalMode.ServiceControl) { if (!backupPerformed) { throw new InvalidOperationException("Backup services before removing them!"); } string[] existingServicesNames = GetAllServicesNames(); foreach (string serviceToRemove in servicesToRemove) { var actualServicesToRemove = existingServicesNames.Where(name => name.StartsWith(serviceToRemove)); if (removalMode == ServiceRemovalMode.ServiceControl) { RemoveServicesUsingSC(actualServicesToRemove); } else if (removalMode == ServiceRemovalMode.Registry) { RemoveServicesByDeletingRegistryKeys(actualServicesToRemove); } } }