Warum erfordert die Änderung des Computernamens einen Neustart in Windows?

30

Ich verstehe, dass das Ändern des Hostnamens / Computernamens für einen Windows-basierten Computer (Client oder Server) einen Neustart erfordert. Sobald ein Computername geändert wird, wird ein ausstehender Computername in der Systemregistrierung gespeichert und beim nächsten Start angewendet. Ich konnte nicht viel technische Dokumentation finden, warum genau dies erforderlich war.

Kann mich bitte jemand auf die technischen Herausforderungen hinweisen, die dahinter stehen, wenn eine Änderung des Hostnamens ohne einen Neustart des Systems nicht vollständig ist?

Ameer Deen
quelle
1
Der akzeptierten Antwort wurde ein Kommentar mit einem Link zu einem MSDN-Artikel hinzugefügt, in dem erläutert wird, warum ein Neustart erforderlich ist.
Ameer Deen
Ich würde nicht sagen, dass der verlinkte Artikel erklärt, warum ein Neustart erforderlich ist. Wenn es nur darum ging, es an diesen anderen Ort zu kopieren, könnte der Befehl zum Ändern des Namens ausgeführt und kopiert werden. Der Schlüsselsatz in der akzeptierten Antwort lautet: "Viele Windows-Dienste und -Anwendungen, sowohl von Microsoft als auch von Drittanbietern, die den Hostnamen des Systems verwenden, lesen diesen normalerweise nur einmal beim Start und nie wieder."
ToolmakerSteve

Antworten:

56

Sie müssen nicht sofort nach dem Umbenennen des Computers neu starten. Erwarten Sie nur nicht, dass jeder Dienst und jede Funktion den neuen Namen übernimmt.

Dinge wie Systemumgebungsvariablen werden beim Systemstart einmal gelesen. Wenn Sie diese Variablen ändern, werden sie von den verschiedenen Windows-Komponenten erst nach einem Neustart übernommen. Einige dieser Komponenten sind so tief in das Betriebssystem integriert, dass Sie genauso gut das gesamte Betriebssystem neu starten können.

Viele Windows-Dienste und -Anwendungen, sowohl von Microsoft als auch von Drittanbietern, die den Hostnamen des Systems verwenden, lesen diesen normalerweise nur einmal beim Start und nie wieder.

Ich weiß, wenn ich eine Anwendung schreibe, die den Hostnamen der Maschine liest, wäre es ziemlich dumm von mir, sie regelmäßig abzufragen, nur für den Fall, dass sie sich ändert.

In einem Betriebssystem wie Linux sehen Sie dasselbe. Sie können den Hostnamen ohne Neustart ändern, aber Sie müssen einige sehr grundlegende Komponenten des Systems neu starten, damit sie den neuen Namen übernehmen. Linux ist modularer als Windows, obwohl Windows hinsichtlich der Modularität einen langen Weg zurückgelegt hat.

Eine Möglichkeit, festzustellen, ob auf einem Windows-System eine Computerumbenennung ansteht, besteht darin, die Registrierung zu überprüfen. Wenn der Inhalt von

HKLM\SYSTEM\CurrentControlSet\Control\ComputerName\ComputerName

und

HKLM\SYSTEM\CurrentControlSet\Control\ComputerName\ActiveComputerName

nicht identisch sind, bedeutet dies, dass auf dem System ein Umbenennungsvorgang ansteht, der beim nächsten Neustart des Systems abgeschlossen wird.

Ryan Ries
quelle
10
Danke für den Tipp Ryan. Ich habe den Code für System.Environment.MachineName (mit dotnetpeek) nachgeschlagen. Es verwendet die GetComputerName-Funktion in Kernel32.dll, die Folgendes ausführt: "Ruft den NetBIOS-Namen des lokalen Computers ab. Dieser Name wird beim Systemstart festgelegt, wenn das System ihn aus der Registrierung liest." ( msdn.microsoft.com/en-us/library/windows/desktop/… ). Mit anderen Worten, Sie haben Recht, es wird einfach beim Start zwischengespeichert. Ich wollte nur eine Dokumentation, um es zu sichern. Vielen Dank.
Ameer Deen