为什么计算机名称更改需要在Windows重新启动?

我知道更改基于Windows的计算机(客户机或服务器)的主机名/计算机名称需要重新启动。 我意识到,一旦计算机名称被改变,待处理的机器名称将被存储在系统registry中,并在下一次启动时被应用。 究竟是什么原因,我无法find很多技术文档。

有人可以请指出我正确的方向背后的技术挑战为什么主机名称更改是不完整的,没有系统重新启动?

    重命名机器后不必立即重新启动…只是不要期望每个服务和function都能使用新名称。

    诸如系统环境variables之类的东西在系统启动时被读取一次。 如果你改变这些variables,那么Windows的各种组件在重新启动之前将不会启动它们。 其中一些组件与操作系统如此深入的集成,您可能还会重新启动整个操作系统。

    许多使用系统主机名的Windows服务和应用程序(包括Microsoft和第三方编写的)通常只在启动时读取一次,而不再读取它。

    我知道如果我正在编写一个读取机器主机名的应用程序,那么为了防止它被更改,定期轮询它是非常愚蠢的。

    在像Linux这样的操作系统中,你看到了同样的事情。 您可以在不重新启动的情况下更改主机名,但是您必须重新启动系统的一些非常基本的组件,才能让它们获取新名称。 Linux比Windows更模块化,尽pipeWindows在模块化方面有很长的路要走。

    检测Windows系统是否挂起计算机重命名操作的一种方法是检查registry。 如果内容

    HKLM\SYSTEM\CurrentControlSet\Control\ComputerName\ComputerName

    HKLM\SYSTEM\CurrentControlSet\Control\ComputerName\ActiveComputerName

    这意味着系统有一个挂起的重命名操作,将在下一次系统重启时完成。

    以下是跳过重新启动的脚本: https : //gist.github.com/timnew/2373475