Rozumiem, że zmiana nazwy hosta / nazwy komputera dla komputera z systemem Windows (klienta lub serwera) wymaga ponownego uruchomienia. Zdaję sobie sprawę, że po zmianie nazwy komputera oczekująca nazwa komputera jest zapisywana w rejestrze systemu i stosowana przy następnym uruchomieniu. Nie byłem w stanie znaleźć dużej dokumentacji technicznej na temat tego, DLACZEGO było to wymagane.
Czy ktoś może skierować mnie w dobrym kierunku na wyzwania techniczne stojące za przyczyną, dla której zmiana nazwy hosta nie jest kompletna bez ponownego uruchomienia systemu?
Odpowiedzi:
Nie musisz restartować natychmiast po zmianie nazwy komputera ... po prostu nie oczekuj, że każda usługa i funkcja odbierze nową nazwę.
Rzeczy, takie jak systemowe zmienne środowiskowe, są odczytywane raz, podczas uruchamiania systemu. Jeśli zmienisz te zmienne, różne składniki systemu Windows nie wykryją ich, dopóki nie zostaną ponownie uruchomione. Niektóre z tych komponentów są tak głęboko zintegrowane z systemem operacyjnym, że równie dobrze możesz zrestartować cały system operacyjny.
Wiele usług i aplikacji Windows, zarówno tych napisanych przez Microsoft, jak i innych firm, korzystających z nazwy hosta systemu, zwykle odczytuje ją tylko raz przy uruchamianiu i nigdy więcej nie czyta.
Wiem, że gdybym pisał aplikację, która odczytuje nazwę hosta komputera, głupio byłoby z mojej strony okresowo sprawdzać, czy to się nie zmieniło.
W systemie operacyjnym, takim jak Linux, widzisz to samo. Możesz zmienić nazwę hosta bez ponownego uruchamiania, ale musisz zrestartować niektóre bardzo podstawowe elementy systemu, aby mogły one odebrać nową nazwę. Linux jest bardziej modułowy niż Windows, chociaż Windows przeszedł długą drogę pod względem modułowości.
Jednym ze sposobów wykrycia, czy system Windows oczekuje na operację zmiany nazwy komputera, jest sprawdzenie rejestru. Jeśli zawartość
HKLM\SYSTEM\CurrentControlSet\Control\ComputerName\ComputerName
i
HKLM\SYSTEM\CurrentControlSet\Control\ComputerName\ActiveComputerName
nie są takie same, co oznacza, że system ma oczekującą operację zmiany nazwy, która zakończy się przy następnym uruchomieniu systemu.
źródło
Oto skrypt pomijający ponowne uruchomienie: https://gist.github.com/timnew/2373475
źródło