Назад | Перейти на главную страницу

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

Я понимаю, что для изменения имени хоста / имени компьютера для компьютера под управлением Windows (клиента или сервера) требуется перезагрузка. Я понимаю, что после изменения имени компьютера имя ожидающего компьютера сохраняется в системном реестре и применяется при следующей загрузке. Мне не удалось найти много технической документации о том, ПОЧЕМУ это было необходимо.

Может ли кто-нибудь указать мне правильное направление технических проблем, связанных с тем, почему изменение имени хоста не завершается без перезагрузки системы?

Вам не обязательно перезапускать компьютер сразу после переименования ... просто не ожидайте, что все службы и функции будут использовать новое имя.

Такие вещи, как переменные системной среды, считываются один раз при запуске системы. Если вы измените эти переменные, различные компоненты Windows не заметят их, пока они не будут перезапущены. Некоторые из этих компонентов настолько глубоко интегрированы в ОС, что вы можете перезапустить всю ОС.

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

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

В такой операционной системе, как Linux, вы видите то же самое. Вы можете изменить имя хоста без перезагрузки, но вам придется перезапустить некоторые самые базовые компоненты системы, чтобы они могли использовать новое имя. Linux более модульный, чем Windows, хотя Windows прошла долгий путь с точки зрения модульности.

Один из способов определить, ожидает ли система Windows операции переименования компьютера, - это проверить реестр. Если содержимое

HKLM\SYSTEM\CurrentControlSet\Control\ComputerName\ComputerName

и

HKLM\SYSTEM\CurrentControlSet\Control\ComputerName\ActiveComputerName

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

Вот сценарий пропуска перезагрузки: https://gist.github.com/timnew/2373475