public bool IsEnabled(AutoStartEntry autoStart)
 {
     if (RegistryDisableService == null)
     {
         return(true);
     }
     return(RegistryDisableService.CanBeDisabled(autoStart));
 }
 public void DisableAutoStart(AutoStartEntry autoStart)
 {
     if (RegistryDisableService == null)
     {
         throw new NotImplementedException();
     }
     RegistryDisableService.DisableAutoStart(autoStart);
 }
 public void StopWatcher()
 {
     Logger.Trace("StopWatcher called for {BasePath}", BasePath);
     RegistryDisableService?.StopWatcher();
     if (monitor == null)
     {
         Logger.Trace("No watcher running");
         return;
     }
     monitor.Changed -= ChangeHandler;
     monitor.Error   -= ErrorHandler;
     monitor.Stop();
     monitor.Dispose();
     monitor = null;
     Logger.Trace("Stopped watcher");
 }
 public void StopWatcher()
 {
     Logger.Trace("StopWatcher called for {BasePath}", BasePath);
     RegistryDisableService.StopWatcher();
     if (monitor == null)
     {
         Logger.Trace("No watcher running");
         return;
     }
     monitor.Add    -= AddHandler;
     monitor.Remove -= RemoveHandler;
     monitor.Stop();
     monitor.Dispose();
     monitor = null;
     Logger.Trace("Watcher stopped");
 }
 public void StartWatcher()
 {
     Logger.Trace("StartWatcher called for {BasePath}", BasePath);
     RegistryDisableService.StartWatcher();
     if (monitor != null)
     {
         Logger.Trace("Watcher already started");
         return;
     }
     monitor = new FolderChangeMonitor()
     {
         BasePath = BasePath,
         Category = Category,
     };
     monitor.Add    += AddHandler;
     monitor.Remove += RemoveHandler;
     Logger.Trace("Watcher started");
 }
        /// <summary>
        /// Watches the assigned registry keys
        /// </summary>
        /// <remarks>
        /// Because of API limitations no all changes are monitored.
        /// See https://docs.microsoft.com/en-us/windows/win32/api/winreg/nf-winreg-regnotifychangekeyvalue
        /// Not monitored are changes via RegRestoreKey https://docs.microsoft.com/en-us/windows/win32/api/winreg/nf-winreg-regrestorekeya
        /// </remarks>
        public void StartWatcher()
        {
            Logger.Trace("StartWatcher called for {BasePath}", BasePath);
            RegistryDisableService?.StartWatcher();
            if (monitor != null)
            {
                Logger.Trace("Watcher already started");
                return;
            }
            var currentAutoStarts = (List <AutoStartEntry>)GetCurrentAutoStarts();

            lastAutostarts = new List <RegistryAutoStartEntry>();
            foreach (var currentAutoStart in currentAutoStarts)
            {
                lastAutostarts.Add((RegistryAutoStartEntry)currentAutoStart);
            }
            monitor          = new RegistryChangeMonitor(BasePath);
            monitor.Changed += ChangeHandler;
            monitor.Error   += ErrorHandler;
            monitor.Start();
            Logger.Trace("Watcher started");
        }
 public bool IsEnabled(AutoStartEntry autoStart)
 {
     return(RegistryDisableService.CanBeDisabled(autoStart));
 }
 public void DisableAutoStart(AutoStartEntry autoStart)
 {
     RegistryDisableService.DisableAutoStart(autoStart);
 }