Perché la modifica del nome del computer richiede un riavvio in Windows?


30

Comprendo che la modifica del nome host / nome computer per un computer basato su Windows (client o server) richiede un riavvio. Mi rendo conto che una volta modificato il nome di un computer, un nome di macchina in sospeso viene memorizzato nel registro di sistema e viene applicato al successivo avvio. Non sono stato in grado di trovare molta documentazione tecnica su PERCHÉ era necessario.

Qualcuno può indicarmi la giusta direzione sulle sfide tecniche alla base del perché una modifica del nome host non è completa senza un riavvio del sistema?


1
Aggiunto un commento alla risposta accettata con un collegamento a un articolo MSDN sul motivo per cui è necessario un riavvio.
Ameer Deen,

Non direi che l'articolo collegato spiega perché è necessario un riavvio. Dopotutto, se si trattasse solo di copiarlo in quell'altra posizione, il comando per cambiare il nome potrebbe andare avanti e copiarlo. La frase chiave nella risposta accettata è "Molti servizi e applicazioni Windows, sia quelli scritti da Microsoft che di terze parti, che usano il nome host del sistema, in genere lo leggono solo una volta all'avvio e non lo leggono mai più."
ToolmakerSteve

Risposte:


56

Non è necessario riavviare immediatamente dopo aver rinominato la macchina ... ma non aspettarsi che tutti i servizi e le funzioni acquisiscano il nuovo nome.

Cose come le variabili di ambiente di sistema vengono lette una volta, all'avvio del sistema. Se si modificano tali variabili, i vari componenti di Windows non verranno rilevati fino a quando non vengono riavviati. Alcuni di questi componenti sono così profondamente integrati con il sistema operativo, che potresti anche riavviare l'intero sistema operativo.

Molti servizi e applicazioni Windows, sia quelli scritti da Microsoft che di terze parti, che utilizzano il nome host del sistema, in genere lo leggono solo una volta all'avvio e non lo leggono mai più.

So che se stavo scrivendo un'applicazione che leggesse il nome host della macchina, sarebbe abbastanza sciocco da parte mia sondare periodicamente per esso nel caso in cui fosse cambiato.

In un sistema operativo come Linux, vedi la stessa cosa. È possibile modificare il nome host senza riavviare, ma è necessario riavviare alcuni componenti di base del sistema per far sì che vengano acquisiti con il nuovo nome. Linux è più modulare di Windows, sebbene Windows abbia fatto molta strada in termini di modularità.

Un modo per rilevare se un sistema Windows è in attesa di un'operazione di ridenominazione del computer è controllare il registro. Se il contenuto di

HKLM\SYSTEM\CurrentControlSet\Control\ComputerName\ComputerName

e

HKLM\SYSTEM\CurrentControlSet\Control\ComputerName\ActiveComputerName

non sono gli stessi, ciò significa che il sistema ha un'operazione di ridenominazione in sospeso che verrà completata al successivo riavvio del sistema.


10
Grazie per il suggerimento Ryan. Ho cercato il codice per System.Environment.MachineName (usando dotnetpeek). Utilizza la funzione GetComputerName in Kernel32.dll che: "Recupera il nome NetBIOS del computer locale. Questo nome viene stabilito all'avvio del sistema, quando il sistema lo legge dal registro." ( msdn.microsoft.com/en-us/library/windows/desktop/… ). In altre parole, hai ragione, è semplicemente memorizzato nella cache all'avvio. Volevo solo della documentazione per eseguirne il backup. Grazie.
Ameer Deen,

Utilizzando il nostro sito, riconosci di aver letto e compreso le nostre Informativa sui cookie e Informativa sulla privacy.
Licensed under cc by-sa 3.0 with attribution required.