private void BtSchedule_Click(object sender, RoutedEventArgs e) { _rs.RestartTime = TpPicker.SelectedDate; _rs.IsAcknowledged = true; SqlCe.SetRestartSchedule(_rs); SetStatus(); }
private bool RestartRequired() { if (CcmUtils.IsUpdatesEnforcing() || CcmUtils.IsAppsEnforcing()) { Globals.Log.Information("Detected ongoing installation, suppressing reboot checks."); return(false); } var checks = _settings.RestartChecks; var updatesStatus = _rebootServicingCheck && !SqlCe.GetUpdatesInstallStatusFlag(); if (!updatesStatus) { checks.ComponentBasedServicing = updatesStatus; checks.PendingFileOperations = updatesStatus; checks.WindowsUpdate = updatesStatus; } var result = RebootChecker.RebootRequired(checks); var rs = SqlCe.GetRestartSchedule(); if (!result.Any) { SqlCe.DeleteRestartSchedule(); } else if (rs != null) { if (rs.IsAcknowledged) { return(false); } } if (result.ConfigMgrClient && (_allowFastReboot || !UnsafeNativeMethods.IsUserLoggedOn())) { SqlCe.DeleteRestartSchedule(); SqlCe.SetRestartSchedule(new RestartSchedule { DeadLine = DateTime.Now.MinutePrecission().AddMinutes(5), RestartTime = DateTime.Now.MinutePrecission().AddMinutes(5), IsAcknowledged = true, IsExpress = true, }); return(result.Any); } if (result.Any && _rebootToastDelay-- <= 1) { if (rs == null) { SqlCe.SetRestartSchedule(new RestartSchedule { DeadLine = DateTime.Today.AddDays(_serviceSettings.RestartDeadlineAfterInstall.InDays).AddHours(_serviceSettings.RestartDeadlineAfterInstall.AtHour), RestartTime = DateTime.Today.AddDays(_serviceSettings.RestartDeadlineAfterInstall.InDays).AddHours(_serviceSettings.RestartDeadlineAfterInstall.AtHour), IsAcknowledged = false, IsExpress = false, }); } if (SqlCe.GetAutoEnforceFlag()) { Globals.Log.Information($"Detected auto enforce flag 'true', skipping reboot toast."); } else if (!UnsafeNativeMethods.IsSessionLocked()) { UnsafeNativeMethods.Run(_userApp, $"/ToastReboot", false); } else { Globals.Log.Information($"Detected a locked or non existing user session, a Toast notification was suppressed."); } _rebootToastDelay = _fiveMinuteIntervalsPerDay / _serviceSettings.NumberOfRestartToastsPerDay; } return(result.Any); }