?? 對(duì)注冊(cè)表進(jìn)行編程的“捷徑”.txt
字號(hào):
我們知道,在VB中,可以用 SHELL 函數(shù)來執(zhí)行一個(gè)可執(zhí)行文件。而對(duì)注冊(cè)表的訪問可以方便地用 Regedit.exe 命令將它與一文本文件聯(lián)系進(jìn)來。這樣一來,我們無需掌握高深的API函數(shù),需編程對(duì)該文本文件進(jìn)行處理即可。
首先,注冊(cè)表中各個(gè)主鍵和子鍵的鍵值,一般來說有以下幾種類型:
①REG_SZ(普通字符串)
②REG_EXPAND_SZ(可展開式字串)
③REG_BINARY(二進(jìn)制)
④REG_DWORD(長整數(shù)型,即十六進(jìn)制值)。
他們?cè)趯?dǎo)出的注冊(cè)表文件中的表示形式不盡相同。具體實(shí)例請(qǐng)參見后文。
其次,讓我們來熟悉一下Regedit命令的用法及有關(guān)參數(shù):
REGEDIT filename1
REGEDIT /E filename3 [regpath1]
REGEDIT /D regpath2
filename1 指定將要輸入到注冊(cè)表中的文件。
/E filename3 指定注冊(cè)表的輸出文件名。
regpath1 指定將要輸出的注冊(cè)表的鍵名(缺省為輸出整個(gè)注冊(cè)表)
/D regpath2 指定將要?jiǎng)h除的注冊(cè)表的鍵名
其中導(dǎo)出或?qū)氲奈募橐晃谋疚募8袷饺缦拢?小括號(hào)內(nèi)為注釋,……表示此處有省略)
REGEDIT4 (必須以此開頭,注意大小寫)
[HKEY_LOCAL_MACHINE\Software](每個(gè)子鍵與上一子鍵之間必須空一行,且子鍵用[]括起來)
@=""(@表示鍵值名為“默認(rèn)”,鍵值為空串)
…… ……
[HKEY_LOCAL_MACHINE\Software\Microsoft\Windows\CurrentVersion]
"InstallType"=hex:03,00 (表示鍵名為"InstallType",鍵值為REG_BINARY(即二進(jìn)制)類型 03 00)
"DevicePath"="C:\\WINDOWS\\INF"
(鍵"DevicePath"是普通字符串,即 REG_SZ 類型。當(dāng)字符串中含有路徑“\”等特殊字符時(shí),約定
用“\\”代替“\”,用“\n”和“\"”來代替回車和 "字符)
…… ……
[HKEY_LOCAL_MACHINE\Software\Microsoft\Windows\CurrentVersion\Setup\SetupX\Cert]
"RG2CATDB Return"=dword:00000000(dword:表示該鍵值REG_DWORD(長整數(shù)型,即十六進(jìn)制值)
[HKEY_LOCAL_MACHINE\Software\Microsoft\Windows\CurrentVersion\MS-DOSOptions\Smartdrv]
…… ……
"Autoexec.Bat"="LoadHigh %WINDIR%\\SmartDrv"(含有一對(duì)%的字符串是可展開式字串,即REG_EXPAND_SZ類型,此處%WINDIR%表示W(wǎng)INDOWS的工作目錄)
例如:可用以下代碼將指定的子鍵路徑[HKEY_LOCAL_MACHINE\Software]的默認(rèn)值修改為字符串:“此處值已修改!”
stt = "HKEY_LOCAL_MACHINE"
a = Shell("regedit /e c:\windows\temp\temp.txt " & stt)
'導(dǎo)出要修改的注冊(cè)表分支
If a = 0 Then
MsgBox "導(dǎo)出錯(cuò)誤!": End '可能是子鍵名稱錯(cuò)誤
regpath = "[" + stt + "]"
Open "c:\windows\temp\temp.txt" For Input As #1
Open "c:\windows\temp\temp1.txt" For Output As #2
regwrite = flase '是否是要修改的行
Print #2, "REGEDIT4" '寫入文件頭,注意必須是大寫
Print #2, ""
Do
Line Input #1, aa$
b$ = aa$
If regwrite = True Then '說明此行是需要修改的行
b$ = "@=""默認(rèn)值已修改!"""
Print #2, b$
MsgBox "原來的值為:" & Mid$(aa$, 3) & "即將改為:" &
Mid$(b$, 3), vbOKOnly, "注冊(cè)表變化"
End If
If aa$ = regpath Then
Print #2, b$
regwrite = True
'說明下一行為所要修改的行,以便下次循環(huán)時(shí)對(duì)b$進(jìn)行修改
Else
regwrite = flase '不是要修改的行
End If
' If Left(aa$, 2) <> "@=" And
b$ = "@=""默認(rèn)值已修改!""" Then
Print #2, aa$
'如果子鍵[HKEY_LOCAL_MACHINE\Software]中原來未設(shè)置默
認(rèn)值,此時(shí)相當(dāng)于在文件#1處插入b$。
Loop Until EOF(1)
Close
a = Shell("regedit c:\windows\temp\temp1.txt ")
'將修改后的內(nèi)容導(dǎo)入到注冊(cè)表中
If a = 0 Then MsgBox "修改失敗!": End
按以上思路,我們可以很方便快捷地對(duì)注冊(cè)表進(jìn)行增、刪、改等操作,是不是很簡單?
?? 快捷鍵說明
復(fù)制代碼
Ctrl + C
搜索代碼
Ctrl + F
全屏模式
F11
切換主題
Ctrl + Shift + D
顯示快捷鍵
?
增大字號(hào)
Ctrl + =
減小字號(hào)
Ctrl + -