利用批处理文件修改机器名以及一些扩展
2008-05-06 13:59
225 查看
看到有人用Ghost文件还原了系统之后,在登入的时候,会弹出一个cmd的窗口要求输入新的HostName,感觉挺好玩的,就研究了下。我想原理应该就是简单地用批处理文件接受了用户输入的变量,而后再修改注册表里的对应项吧。下面是我参考了些资料,写的一个简单化的批处理文件:
@echo off
color a
set Name=%COMPUTERNAME%
:GetHostName
set /p Name=请输入新的机器名:
if %Name%==%COMPUTERNAME% goto GetHostName
reg add "HKLM\system\CurrentControlSet\services\tcpip\parameters" /v "NV Hostname" /d %Name% /f
reg add "HKLM\SYSTEM\CurrentControlSet\Control\ComputerName\ComputerName" /v ComputerName /d %Name% /f
echo 机器名已修改,重启后生效
pause
@echo on
这里用的是windows NT 5.1以后系统自带的reg.exe注册表工具修改注册表。有两个地方,我稍微介绍下。
1、如何使批处理文件接收用户的键盘输入
这里介绍两种方法,还有其他的方法欢迎提出。
其一,利用set命令。
set /P variable=[promptString],/P 命令行开关允许将变量数值设成用户输入的一行输入。读取输入行之前,显示指定的 promptString。promptString 可以是空的。提供的批处理文件就是使用了这种方法。
其二,利用%1、%2等传递参数。
如下一个批处理文件
@echo off
set Var=%1
echo %Var%
@echo on
在命令行提示符下,输入批处理文件名称再输入空格加上变量数值,就可以把数值赋给了变量Var。
2、关于注册表中机器名的存放位置和关系
Windows Registry Editor Version 5.00
[HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\Services\Tcpip\Parameters]
"NV Domain"=""
"NV Hostname"="MYCHAT-2xxx"
"Domain"=""
"Hostname"="MYCHAT-2xxx"
[HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\Control\ComputerName\ComputerName]
"ComputerName"="MYCHAT-2xxx"
[HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\Control\ComputerName\ActiveComputerName]
"ComputerName"="MYCHAT-2xxx"
上边的注册表文件反映了修改机器名时涉及到的几个地方。
其中"Hostname"、"Domain"对应当前机器的全域名(FQDN,Fully Qualified Domain Name)","NV Hostname"和"NV Domain"将在下一次重启时覆盖"Hostname"和"Domain"处。ActiveComputerName处的"ComputerName"对应当前NetBIOS名,另一处ComputerName将
在下一次重启时覆盖ActiveComputerName处。我们在"我的电脑"的属性里修改机器名,只是修改了"NV Hostname","NV Domain"和"ComputerName"处的"ComputerName",这样就需要重启后才能覆盖当前的机器名。
FQDN和NetBIOS名之间没有必然的联系,NetBIOS名可用在很多地方,适用于TCP/IP、IPX/SPX、NetBEUI等实现了NetBIOS接口的通信协议。"nbtstat -A <target>"和设备管理器涉及到的都是当前NetBIOS名。FQDN却只用于TCP/IP协议,命令hostname.exe和ipconfig /all得到的就是FQDN里的主机名。本文出自 “tsingfu” 博客,请务必保留此出处http://tsingfu.blog.51cto.com/366160/75318
@echo off
color a
set Name=%COMPUTERNAME%
:GetHostName
set /p Name=请输入新的机器名:
if %Name%==%COMPUTERNAME% goto GetHostName
reg add "HKLM\system\CurrentControlSet\services\tcpip\parameters" /v "NV Hostname" /d %Name% /f
reg add "HKLM\SYSTEM\CurrentControlSet\Control\ComputerName\ComputerName" /v ComputerName /d %Name% /f
echo 机器名已修改,重启后生效
pause
@echo on
这里用的是windows NT 5.1以后系统自带的reg.exe注册表工具修改注册表。有两个地方,我稍微介绍下。
1、如何使批处理文件接收用户的键盘输入
这里介绍两种方法,还有其他的方法欢迎提出。
其一,利用set命令。
set /P variable=[promptString],/P 命令行开关允许将变量数值设成用户输入的一行输入。读取输入行之前,显示指定的 promptString。promptString 可以是空的。提供的批处理文件就是使用了这种方法。
其二,利用%1、%2等传递参数。
如下一个批处理文件
@echo off
set Var=%1
echo %Var%
@echo on
在命令行提示符下,输入批处理文件名称再输入空格加上变量数值,就可以把数值赋给了变量Var。
2、关于注册表中机器名的存放位置和关系
Windows Registry Editor Version 5.00
[HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\Services\Tcpip\Parameters]
"NV Domain"=""
"NV Hostname"="MYCHAT-2xxx"
"Domain"=""
"Hostname"="MYCHAT-2xxx"
[HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\Control\ComputerName\ComputerName]
"ComputerName"="MYCHAT-2xxx"
[HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\Control\ComputerName\ActiveComputerName]
"ComputerName"="MYCHAT-2xxx"
上边的注册表文件反映了修改机器名时涉及到的几个地方。
其中"Hostname"、"Domain"对应当前机器的全域名(FQDN,Fully Qualified Domain Name)","NV Hostname"和"NV Domain"将在下一次重启时覆盖"Hostname"和"Domain"处。ActiveComputerName处的"ComputerName"对应当前NetBIOS名,另一处ComputerName将
在下一次重启时覆盖ActiveComputerName处。我们在"我的电脑"的属性里修改机器名,只是修改了"NV Hostname","NV Domain"和"ComputerName"处的"ComputerName",这样就需要重启后才能覆盖当前的机器名。
FQDN和NetBIOS名之间没有必然的联系,NetBIOS名可用在很多地方,适用于TCP/IP、IPX/SPX、NetBEUI等实现了NetBIOS接口的通信协议。"nbtstat -A <target>"和设备管理器涉及到的都是当前NetBIOS名。FQDN却只用于TCP/IP协议,命令hostname.exe和ipconfig /all得到的就是FQDN里的主机名。本文出自 “tsingfu” 博客,请务必保留此出处http://tsingfu.blog.51cto.com/366160/75318
相关文章推荐
- 一个简单的利用ini配置文件以及用户输入的交互进行文件夹内容拷贝的批处理文件脚本的实现
- 统计一个文件夹下的所有文件并放入到一个txt中,并删除一些格式的文件,这个方法扩展,自己修改
- Windows下批处理修改文件名以及删除文件中重复名
- 利用Flash上传大文件:swfupload修改以及详细说明
- 批处理自动修改办公IP(附源码以及学习文件)
- mysql 批处理文件--- 创建 用户 以及 导入数据
- mvc4 ViewBag 的一些弊端 以及选择 dynamic 的方便型(本文有待修改.内容出现错误)
- 利用java反射机制 读取配置文件 实现动态类加载以及动态类型转换
- 利用java 写XML 修改XML文件
- 命令行签名apk,以及修改签名文件跟debugkey一致,放到build路径下即可运行
- iPhone沙盒以及文件操作的一些简单介绍
- 修改Rom中的一些资源文件
- 利用xcodeproj修改xcode工程文件
- 利用批处理轻松压缩文件
- 利用修改配置文件整合Eclipse和Flex
- Linux文件管理以及一些常用的基础命令解析
- 一个简单的反射连接程序(修改文件时间,以及创建Windows服务)
- 从一位老领导那里看到的PL的职责以及自己的一些扩展
- 采用批处理文件快速动态修改IP地址,默认网关和DNS