批处理检测注册表项⽬是否存在并运⾏指定命令批处理检测注册表项⽬是否存在并运⾏指定命令
要实现上⾯说的功能就必须要⽤到批处理操作注册表命令「REG QUERY」,这个命令的⼤体功能就是可以查询相关注册表项⽬。
先来看下「REG QUERY」命令介绍:
REG QUERY KeyName [/v ValueName | /ve] [/s]
KeyName [\Machine\]FullKey
Machine 远程机器名 – 忽略当前机器的默认值,远程机器上只有 HKLM 和 HKU。FullKey 格式为 ROOTKEY\SubKey。ROOTKEY [ HKLM | HKCU | HKCR | HKU | HKCC ]SubKey 所选 ROOTKEY 下的注册表项的全名。
/v 参数的意思是查询特定注册表项,ValueName 所选项下的要查询的值的名称,省略时,该项下的所有值都会得到查询。
/ve 查询默认值或空⽩值名称<no name>
/s 查询所有⼦项和值
例如:
REG QUERY HKLM\Software\Microsoft\ResKit /v Version 显⽰注册表值 Version 的值
REG QUERY HKLM\Software\Microsoft\ResKit\rt\Setup /s 显⽰注册表项 Setup 下的所有⼦项和值
重定向过多是什么意思现在知道「REG QUERY」命令可以读取注册变项⽬并返回相关结果,就可以通过批处理根据返回值来写注册表了。
先看下下⾯完整的⼀个实例代码,是刚发布「」软件的绿化源码:
1. @echo off
2. reg query HKCU\Software\IconEmpire\IconExtractor\Registered /v Key>nul 2>nul&&goto A||goto B
3. :A
4.
5. exit
6. :B
7.
8. reg add "HKEY_CURRENT_USER\Software\IconEmpire\IconExtractor\Registered" /v "Key" /d "9m888x9998888p" /f
9. reg add "HKEY_CURRENT_USER\Software\IconEmpire\IconExtractor\Registered" /v "UserName" /d "V5PC" /f
10. reg add "HKEY_CURRENT_USER\Software\IconEmpire\IconExtractor\Registered" /v "Email" /d "V5PC@PC.COM" /f
11.
12. exit
13. pause>nul
好接下来简单分析下这个代码:
1. reg query HKCU\Software\IconEmpire\IconExtractor\Registered /v Key>nul 2>nul&&goto A||goto B
由于这个程序的注册表信息保存在「HKCU\Software\IconEmpire\IconExtractor\Registered」「Key」这个值项中,所以通过「reg query」命令来读取这个值项中有没有数据。
「/V」参数就是只读指定「Key」中的数据。
「2>nul」是不显⽰错误提⽰,如果是「1>nul」意思是不显⽰命令运⾏的正确提⽰,「>」是重定向符号,「nul」是空设备的意思。
「&&」顺序执⾏多条命令,当碰到执⾏出错的命令后将不执⾏后⾯的命令。
「||」 顺序执⾏多条命令,当碰到执⾏正确的命令后将不执⾏后⾯的命令。
「goto A」和「goto B」是跳转指令,具体要跳到那⾥「A」还是「B」就要看返回值了并且是通过「||」控制⾛向。
1. :A
2.
3. exit
下⾯的指令就简单了,如果跳转到A就通过下⾯的「start」运⾏程序就⾏了,「exit」是退出。
1. :B
2.
3. reg add "HKEY_CURRENT_USER\Software\IconEmpire\IconExtractor\Registered" /v "Key" /d "9m888x9998888p" /f
4. reg add "HKEY_CURRENT_USER\Software\IconEmpire\IconExtractor\Registered" /v "UserName" /d "V5PC" /f
5. reg add "HKEY_CURRENT_USER\Software\IconEmpire\IconExtractor\Registered" /v "Email" /d "V5PC@PC.COM" /f
6.
7. exit
8. pause>nul
如果跳转到B就通过「reg add」添加注册表项,后⾯同样也是通过「start」运⾏程序,「exit」代码退出,最后⼀句「pause」是暂停这句多余了,因为不等⾛到这句代码就已经退出了。
版权声明:本站内容均来自互联网,仅供演示用,请勿用于商业和其他非法用途。如果侵犯了您的权益请与我们联系QQ:729038198,我们将在24小时内删除。
发表评论