一般来说,你在windows电脑属性里修改计算机名称,需要重新启动电脑才生效。
其实计算机名称是保存在Windows注册表里面的,我们可以通过直接修改注册表,达到修改计算机名称的目的。
修改过程如下:
- 按规则创建新的注册表文件,定义新的计算机名称;
- 使用regedit /s命令,导入前面生成的注册表;
- 最后,使用python模块subprocess.call()调用windows系统cmd命令行执行。
import subprocess
name = 'Python_Test7'
scripts = '''REGEDIT4
[HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\Control\ComputerName]
[HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\Control\ComputerName\ComputerName]
"ComputerName"="{name}"
[HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\Control\ComputerName\ActiveComputerName]
"ComputerName"="{name}"
[HKEY_LOCAL_MACHINE\SYSTEM\ControlSet002\Control\ComputerName\ComputerName]
"ComputerName"="{name}"
[HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\Services\Tcpip\Parameters]
"NV Hostname"="{name}"
"Hostname"="{name}"
[HKEY_USERS\S-1-5-18\Software\Microsoft\Windows\ShellNoRoam]
@="{name}"
[HKEY_LOCAL_MACHINE\SYSTEM\ControlSet001\Control\ComputerName\ActiveComputerName]
"ComputerName"="{name}"
[HKEY_LOCAL_MACHINE\SYSTEM\ControlSet001\Services\Tcpip\Parameters]
"NV Hostname"="{name}"
"Hostname"="{name}"
[HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\Windows NT\CurrentVersion\Winlogon]
"DefaultDomainName"="{name}"
"AltDefaultDomainName"="{name}" '''
cmdline = scripts.format('{}',name=name).split('\n')
cmdlines = []
for v in cmdline:
cmdlines.append(v + '\n')
fileName = 'c:/windows/reg.reg'
with open(fileName,'w',encoding='utf-8') as file:
file.writelines(cmdlines)
cmd_rename = 'regedit /s c:/windows/reg.reg'
subprocess.call(cmd_rename)
参考:
亦良Cool. 一键修改计算机名(无需重启). CSDN博客. 2019.07