Способ предотвратить перезагрузку компьютера Центром обновления Windows?

1487
Russell Patterson

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

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

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

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

6
Это решение предназначено только для вас лично на вашем ПК или для вашей программы, которая может потенциально работать на других ПК? Kurt W. Leucht 14 лет назад 0
Этот код будет работать на более чем 5000 машин. 14 лет назад 0
Это был бы хороший вопрос кандидата для области бета-суперпользователей. Nazadus 14 лет назад 0
Вы ищете программный метод? Если так, это относится к stackoverflow (и не должно было быть перенесено ...) bdonlan 14 лет назад 0
Да, я ищу способ сделать это в C #. Я действительно не знаю, почему это было перенесено. Я думаю, что вопрос в любом случае стоит посередине. Russell Patterson 14 лет назад 0

7 ответов на вопрос

7
The How-To Geek

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

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

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

NoAutoRebootWithLoggedOnUsers

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

4
JAB

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

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

Я думаю, что это именно то, что установка ключа реестра должна делать. 14 лет назад 0
2

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

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

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

если вы сделаете это, программа останется открытой? 14 лет назад 0
Да, он полностью отменяет завершение работы и оставляет приложение запущенным. 14 лет назад 1
2
chakrit

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

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

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

Проблема в том, что пользователям придется снова войти в систему, прежде чем программа запустится снова. Это не приемлемо. 14 лет назад 0
@ rwponu Понятно ... не могли бы вы подробнее рассказать о ситуации и почему это желаемое поведение? chakrit 14 лет назад 0
Программа представляет собой будильник. Если компьютер перезагружается из-за обновления Windows, очевидно, я разозлил немало пользователей. Russell Patterson 14 лет назад 0
1
Jon Galloway

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

Я хочу отключить обновление Windows только во время работы моей программы. Это должно начаться снова, когда программа закрыта. 14 лет назад 0
0
Atmocreations

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

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

0
Greg

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

sc.exe stop wuauserv 
Ваш ответ без подробностей и его трудно понять. Пожалуйста, рассмотрите возможность пересмотра своего ответа, чтобы предоставить более подробную информацию. Например, что на самом деле делает этот процесс? KronoS 11 лет назад 0
Я сделал это вики. Пожалуйста, не стесняйтесь редактировать. Greg 11 лет назад 0