6

Я ищу способ предотвратить перезапуск / установку обновлений Windows во время работы моей программы.

В настоящее время я настраиваю раздел реестра, который находится в:

HKEY_LOCAL_MACHINE\SOFTWARE\Policies\Microsoft\Windows\WindowsUpdate\AU

называется "AUOptions". Я устанавливаю это значение на "2", однако в Vista это не работает, так как мой компьютер перезагружался прошлой ночью. UAC в настоящее время полностью выключен. Есть другие идеи?

7 ответов7

7

Для этого вам нужно использовать другой параметр реестра:

HKLM\SOFTWARE\Policies\Microsoft\Windows\WindowsUpdate\AU

Затем установите это в 1:

NoAutoRebootWithLoggedOnUsers

Я также собрал загружаемое исправление реестра для этого, если вы хотите этого.

4

Что ж, если у меня на компьютере настроен Центр обновления Windows, он будет загружать обновления, но на самом деле не будет устанавливать / перезагружать их, пока я не решу это сделать (поскольку мне нравится держать компьютер включенным большую часть времени как необходимость заново открывать все, что я открыл до перезагрузки компьютера).

Будучи потенциально экстремальным, это было бы простым решением вашей проблемы, хотя и не программным.

2

Я не знаю, является ли это приложением Windows Forms или нет, но вы можете отменить завершение работы в обработчике событий FormClosing приложения Windows Forms следующим образом:

    private void Form1_FormClosing(object sender, FormClosingEventArgs e)
    {
        if (e.CloseReason == CloseReason.WindowsShutDown)
        {
            e.Cancel = true;
        }
    }

Возможно, обновление Windows переопределит это, но нормальному отключению пользователя будет препятствовать этот код (по крайней мере, в XP).

2

ИМО лучшим подходом было бы изучить, как ваше приложение может автоматически перезапускаться после перезапуска Windows.

Я часто оставлял несколько экземпляров Visual Studio, некоторые окна обозревателя и некоторые браузеры, работающие, когда я возвращаюсь домой и когда я возвращаюсь на следующее утро, все приложения все еще работают. Поэтому я думаю, что может быть способ обнаружить и автоматически зарегистрировать приложение для перезапуска.

Я думаю, что это может быть более задокументировано и легко реализовано, чем попытка предотвратить закрытие окон.

1

В XP, Vista и Win7 есть параметр групповой политики. Обратите внимание, что gpedit.msc не установлен в домашней версии Vista.

0

Это не хорошее решение, но возможное: просто убить / остановить сервис.

Вы также можете (по крайней мере, это работает в Windows XP) изменить параметры политики с помощью панели gpedit.msc . Не знаю, может ли редактирование групповых политик быть сделано программно.

0

Запустите этот процесс, чтобы полностью остановить Windows Update (на свой страх и риск):

sc.exe stop wuauserv

Всё ещё ищете ответ? Посмотрите другие вопросы с метками .