windows 批处理注册表修改

来源:互联网 发布:诏安网络花店 编辑:程序博客网 时间:2024/06/01 09:58

昨天一个同事抱怨我维护的一个产品修改设置比较麻烦,能不能写个批处理脚本去执行。我自己想想好像也是那么一回事,之前还让客户去修改注册表什么的。我当初连注册表怎么进入都不知道,也是各种度娘。于是开始写一个批处理。

先看看批处理注册表语法 :reg /?可以查看

主要命令有如下几条:

REG Operation [Parameter List]  Operation  [ QUERY   | ADD    | DELETE  | COPY    |               SAVE    | LOAD   | UNLOAD  | RESTORE |               COMPARE | EXPORT | IMPORT  | FLAGS ]返回代码: (除了 REG COMPARE)  0 - 成功  1 - 失败要得到有关某个操作的帮助,请键入:  REG Operation /?例如:  REG QUERY /?  REG ADD /?  REG DELETE /?  REG COPY /?  REG SAVE /?  REG RESTORE /?  REG LOAD /?  REG UNLOAD /?  REG COMPARE /?  REG EXPORT /?  REG IMPORT /?  REG FLAGS /?

每一个对应的不同的方法:

我们来看看等下要用到的reg add命令

REG ADD KeyName [/v ValueName | /ve] [/t Type] [/s Separator] [/d Data] [/f]        [/reg:32 | /reg:64]  KeyName  [\\Machine\]FullKey           Machine  远程机器名 - 忽略默认到当前机器。远程机器上                    只有 HKLM 和 HKU 可用。           FullKey  ROOTKEY\SubKey           ROOTKEY  [ HKLM | HKCU | HKCR | HKU | HKCC ]           SubKey   所选 ROOTKEY 下注册表项的完整名称。  /v       所选项之下要添加的值名称。  /ve      为注册表项添加空白值名称(默认)。  /t       RegKey 数据类型           [ REG_SZ    | REG_MULTI_SZ | REG_EXPAND_SZ |             REG_DWORD | REG_QWORD    | REG_BINARY    | REG_NONE ]           如果忽略,则采用 REG_SZ。  /s       指定一个在 REG_MULTI_SZ 数据字符串中用作分隔符的字符           如果忽略,则将 "\0" 用作分隔符。  /d       要分配给添加的注册表 ValueName 的数据。  /f       不用提示就强行覆盖现有注册表项。 /reg:32  指定应该使用 32 位注册表视图访问的注册表项。 /reg:64  指定应该使用 64 位注册表视图访问的注册表项。例如:  REG ADD \\ABC\HKLM\Software\MyCo    添加远程机器 ABC 上的一个注册表项 HKLM\Software\MyCo  REG ADD HKLM\Software\MyCo /v Data /t REG_BINARY /d fe340ead    添加一个值(名称: Data,类型: REG_BINARY,数据: fe340ead)  REG ADD HKLM\Software\MyCo /v MRU /t REG_MULTI_SZ /d fax\0mail    添加一个值(名称: MRU,类型: REG_MULTI_SZ,数据: fax\0mail\0\0)  REG ADD HKLM\Software\MyCo /v Path /t REG_EXPAND_SZ /d ^%systemroot^%    添加一个值(名称: Path,类型: REG_EXPAND_SZ,数据: %systemroot%)    注意: 在扩充字符串中使用插入符号 ( ^ )
 好了,了解了基本语法之后就可以开始写了。

首先我这脚本的需要做的事情是。修改注册表和重启服务。

@reg add HKEY_LOCAL_MACHINE\SOFTWARE\MY-SYSTEMS\ /v “test” /t REG_DWORD /d 2 /f>nulsc stop XX.exesc start XX.exe

然后我们将文件保存为bat后缀。

然后直接运行,最后发现竟然报服务器拒绝错误。后来想想注册表是一个权限很高的地方,所以直接右键使用管理员权限打开。OK了。


接下来再继续写第二个脚本。这个批处理的功能是修改注册表,然后重新打开这个软件

@reg add HKEY_CURRENT_USER\Software\MY-SYSTEMS\CCC /v ATEST /t REG_DWORD /d 1 /f>nultaskkill /f /im XX.exestart "" "C:\Program Files (x86)\XXr\Runtime\bin\XX.exe"

同样管理员权限运行Ok!

0 0