我了解更改基于Windows的计算机(客户端或服务器)的主机名/计算机名需要重新启动。我意识到,一旦更改了计算机名称,待处理的计算机名称就会存储在系统注册表中,并在下次启动时应用。我找不到确切为什么需要的很多技术文档。
有人能为我指出正确的方向,以解决为什么没有重新启动主机就无法完成主机名更改的技术挑战吗?
我了解更改基于Windows的计算机(客户端或服务器)的主机名/计算机名需要重新启动。我意识到,一旦更改了计算机名称,待处理的计算机名称就会存储在系统注册表中,并在下次启动时应用。我找不到确切为什么需要的很多技术文档。
有人能为我指出正确的方向,以解决为什么没有重新启动主机就无法完成主机名更改的技术挑战吗?
Answers:
重命名计算机后,您不必立即重新启动...只是不要期望每个服务和功能都可以使用新名称。
在系统启动时,系统环境变量之类的内容只能读取一次。如果您更改了这些变量,则Windows的各个组件将在重新启动之前无法使用。这些组件中的某些组件与操作系统是如此紧密地集成在一起,您不妨重新启动整个操作系统。
许多Windows服务和应用程序,无论是由Microsoft还是由第三方编写的,都使用系统的主机名,通常在启动时只读取一次,而从不读取。
我知道如果我正在编写一个读取机器主机名的应用程序,以防万一它变了就定期轮询它对我来说是很愚蠢的。
在诸如Linux的操作系统中,您会看到相同的东西。您可以在不重新引导的情况下更改主机名,但是必须重新启动系统的一些非常基本的组件才能使它们使用新名称。尽管Windows在模块化方面已经走了很长一段路,但Linux比Windows更具模块化。
检测Windows系统是否正在等待计算机重命名操作的一种方法是检查注册表。如果内容
HKLM\SYSTEM\CurrentControlSet\Control\ComputerName\ComputerName
和
HKLM\SYSTEM\CurrentControlSet\Control\ComputerName\ActiveComputerName
不相同,这意味着系统具有待处理的重命名操作,该操作将在下次系统重新引导时完成。
这是跳过重启的脚本:https : //gist.github.com/timnew/2373475