![为什么在 Windows 中更改计算机名称需要重新启动?](https://linux22.com/image/616483/%E4%B8%BA%E4%BB%80%E4%B9%88%E5%9C%A8%20Windows%20%E4%B8%AD%E6%9B%B4%E6%94%B9%E8%AE%A1%E7%AE%97%E6%9C%BA%E5%90%8D%E7%A7%B0%E9%9C%80%E8%A6%81%E9%87%8D%E6%96%B0%E5%90%AF%E5%8A%A8%EF%BC%9F.png)
我理解更改基于 Windows 的计算机(客户端或服务器)的主机名/计算机名需要重新启动。我意识到一旦更改了计算机名,待定的计算机名就会存储在系统注册表中并在下次启动时应用。我找不到太多技术文档来说明为什么需要这样做。
有人能给我指出为什么如果不重启系统就无法完成主机名更改背后的技术难题吗?
答案1
重命名机器后,您不必立即重新启动……只是不要指望每个服务和功能都能采用新名称。
系统环境变量等内容在系统启动时只读取一次。如果您更改这些变量,Windows 的各个组件在重新启动之前不会发现它们。其中一些组件与操作系统集成得如此紧密,您不妨重新启动整个操作系统。
许多使用系统主机名的 Windows 服务和应用程序(包括由 Microsoft 和第三方编写的服务和应用程序)通常仅在启动时读取一次,并且永远不会再次读取。
我知道如果我正在编写一个读取机器主机名的应用程序,那么为了防止它发生变化而定期轮询它就显得很愚蠢了。
在 Linux 等操作系统中,您会看到同样的情况。您可以更改主机名而无需重新启动,但您必须重新启动系统的一些非常基本的组件才能让它们接受新名称。Linux 比 Windows 更模块化,尽管 Windows 在模块化方面已经取得了长足的进步。
检测 Windows 系统是否正在等待计算机重命名操作的一种方法是检查注册表。如果
HKLM\SYSTEM\CurrentControlSet\Control\ComputerName\ComputerName
和
HKLM\SYSTEM\CurrentControlSet\Control\ComputerName\ActiveComputerName
不一样,这意味着系统有一个待处理的重命名操作,该操作将在下次系统重新启动时完成。
答案2
以下是跳过重启的脚本:https://gist.github.com/timnew/2373475