¿Por qué el cambio de nombre de la computadora requiere un reinicio en Windows?

30

Entiendo que cambiar el nombre de host / nombre de la computadora para una máquina basada en Windows (Cliente o Servidor) requiere un reinicio. Me doy cuenta de que una vez que se cambia el nombre de una computadora, un nombre de máquina pendiente se almacena en el registro del sistema y se aplica en el próximo arranque. No pude encontrar mucha documentación técnica sobre exactamente POR QUÉ esto se requería.

¿Alguien puede señalarme en la dirección correcta sobre los desafíos técnicos detrás de por qué un cambio de nombre de host no está completo sin un reinicio del sistema?

Ameer Deen
fuente
1
Se agregó un comentario a la respuesta aceptada con un enlace a un artículo de MSDN sobre por qué es necesario reiniciar.
Ameer Deen
No diría que el artículo vinculado explica por qué es necesario reiniciar. Después de todo, si solo era cuestión de copiarlo en esa otra ubicación, entonces el comando para cambiar el nombre podría seguir adelante y copiarlo. La frase clave en la respuesta aceptada es "Muchos servicios y aplicaciones de Windows, tanto los escritos por Microsoft como los de terceros, que usan el nombre de host del sistema, generalmente solo lo leen una vez al inicio y nunca lo vuelven a leer".
ToolmakerSteve

Respuestas:

56

No tiene que reiniciar inmediatamente después de cambiar el nombre de la máquina ... simplemente no espere que todos los servicios y funciones adopten el nuevo nombre.

Cosas como las variables de entorno del sistema se leen una vez, al inicio del sistema. Si cambia esas variables, los diversos componentes de Windows no las detectarán hasta que se reinicien. Algunos de esos componentes están tan profundamente integrados con el sistema operativo, que bien podría reiniciar todo el sistema operativo.

Muchos servicios y aplicaciones de Windows, tanto los escritos por Microsoft como los de terceros, que usan el nombre de host del sistema, generalmente solo lo leen una vez al inicio y nunca lo vuelven a leer.

Sé que si escribiera una aplicación que lea el nombre de host de la máquina, sería bastante tonto de mi parte sondearla periódicamente en caso de que cambiara.

En un sistema operativo como Linux, ves lo mismo. Puede cambiar el nombre de host sin reiniciar, pero debe reiniciar algunos componentes muy básicos del sistema para que puedan elegir el nuevo nombre. Linux es más modular que Windows, aunque Windows ha recorrido un largo camino en términos de modularidad.

Una forma de detectar si un sistema Windows está pendiente de una operación de cambio de nombre de la computadora es verificar el registro. Si el contenido de

HKLM\SYSTEM\CurrentControlSet\Control\ComputerName\ComputerName

y

HKLM\SYSTEM\CurrentControlSet\Control\ComputerName\ActiveComputerName

no son lo mismo, eso significa que el sistema tiene una operación de cambio de nombre pendiente que se completará la próxima vez que se reinicie el sistema.

Ryan Ries
fuente
10
Gracias por el consejo Ryan. Busqué el código para System.Environment.MachineName (usando dotnetpeek). Utiliza la función GetComputerName en Kernel32.dll que: "Recupera el nombre NetBIOS de la computadora local. Este nombre se establece en el inicio del sistema, cuando el sistema lo lee del registro". ( msdn.microsoft.com/en-us/library/windows/desktop/… ). En otras palabras, tienes razón, simplemente se almacena en caché en el inicio. Solo quería un poco de documentación para respaldarlo. Gracias.
Ameer Deen