コンピューター名の変更でWindowsを再起動する必要があるのはなぜですか?


30

Windowsベースのマシン(クライアントまたはサーバー)のホスト名/コンピューター名を変更するには再起動が必要であることを理解しています。コンピュータ名が変更されると、保留中のマシン名がシステムレジストリに保存され、次回の起動時に適用されることに気付きました。なぜこれが必要だったのかについての技術文書を見つけることができませんでした。

ホスト名の変更がシステムの再起動なしでは完了しない理由の背後にある技術的な課題について、誰かが正しい方向を教えてくれますか?


1
再起動が必要な理由に関するMSDN記事へのリンクを含む承認済みの回答にコメントを追加しました。
アメールディーン

リンクされた記事が再起動が必要な理由を説明しているとは言いません。結局のところ、それを別の場所にコピーするだけの場合は、名前を変更するコマンドを実行してコピーすることができます。受け入れられた答えのキーセンテンスは、「システムのホスト名を使用するマイクロソフトとサードパーティの両方が作成した多くのWindowsサービスとアプリケーションであり、通常は起動時に一度だけ読み取り、二度と読み取りません」です。
ToolmakerSteve

回答:


56

マシンの名前を変更した直後に再起動する必要はありません...すべてのサービスと機能が新しい名前を取得することを期待しないでください。

システム環境変数などは、システムの起動時に一度読み取られます。これらの変数を変更すると、Windowsのさまざまなコンポーネントは、再起動されるまでそれらを取得しません。これらのコンポーネントの一部はOSと非常に深く統合されているため、OS全体を再起動することもできます。

システムのホスト名を使用する多くのWindowsサービスとアプリケーション(Microsoftとサードパーティの両方が作成したもの)は、通常、起動時に一度だけ読み取り、それを再度読み取りません。

マシンのホスト名を読み取るアプリケーションを作成している場合、それが変更された場合に備えて定期的にポーリングするのはかなり愚かなことです。

Linuxなどのオペレーティングシステムでも同じことがわかります。再起動せずにホスト名を変更できますが、システムの非常に基本的なコンポーネントを再起動して新しい名前を取得する必要があります。LinuxはWindowsよりもモジュール化されていますが、Windowsはモジュール性の点で長い道のりを歩んできました。

Windowsシステムがコンピューターの名前変更操作を保留しているかどうかを検出する1つの方法は、レジストリを確認することです。の内容が

HKLM\SYSTEM\CurrentControlSet\Control\ComputerName\ComputerName

そして

HKLM\SYSTEM\CurrentControlSet\Control\ComputerName\ActiveComputerName

同じではありません。つまり、システムの保留中の名前変更操作は、システムの次回の再起動時に完了します。


10
先端ライアンをありがとう。System.Environment.MachineNameのコードを検索しました(dotnetpeekを使用)。Kernel32.dllのGetComputerName関数を使用します。「ローカルコンピューターのNetBIOS名を取得します。この名前は、システムがレジストリから読み取るときに、システムの起動時に設定されます。」(msdn.microsoft.com/en-us/library/windows/desktop/…)。つまり、起動時にキャッシュされるだけです。それをバックアップするためのドキュメントが必要でした。ありがとう。
アメールディーン

弊社のサイトを使用することにより、あなたは弊社のクッキーポリシーおよびプライバシーポリシーを読み、理解したものとみなされます。
Licensed under cc by-sa 3.0 with attribution required.