使用vb对注册机进行编程
2019獨(dú)角獸企業(yè)重金招聘Python工程師標(biāo)準(zhǔn)>>>
在VB中,可以用 SHELL 函數(shù)來執(zhí)行一個(gè)可執(zhí)行文件。而對注冊表的訪問可以方便地用 Regedit.exe 命令將它與一文本文件聯(lián)系進(jìn)來。這樣一來,我們無需掌握高深的API函數(shù),需編程對該文本文件進(jìn)行處理即可。首先,注冊表中各個(gè)主鍵和子鍵的鍵值,一般來說有以下幾種類型:
①REG_SZ(普通字符串)
②REG_EXPAND_SZ(可展開式字串)
③REG_BINARY(二進(jìn)制)
④REG_DWORD(長整數(shù)型,即十六進(jìn)制值)。
他們在導(dǎo)出的注冊表文件中的表示形式不盡相同。具體實(shí)例請參見后文。
其次,讓我們來熟悉一下Regedit命令的用法及有關(guān)參數(shù):
REGEDIT filename1
REGEDIT /E filename3 [regpath1]
REGEDIT /D regpath2
filename1 指定將要輸入到注冊表中的文件。
/E filename3 指定注冊表的輸出文件名。
regpath1 指定將要輸出的注冊表的鍵名(缺省為輸出整個(gè)注冊表)
/D regpath2 指定將要?jiǎng)h除的注冊表的鍵名
其中導(dǎo)出或?qū)氲奈募橐晃谋疚募8袷饺缦?#xff1a;(小括號(hào)內(nèi)為注釋,……表示此處有省略)
REGEDIT4 (必須以此開頭,注意大小寫)
HKEY_LOCAL_MACHINE\Software @=""(@表示鍵值名為“默認(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"(含有一對%的字符串是可展開式字串,即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)出要修改的注冊表分支 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, "注冊表變化" End If If aa$ = regpath Then Print #2, b$ regwrite = True '說明下一行為所要修改的行,以便下次循環(huán)時(shí)對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)入到注冊表中 If a = 0 Then MsgBox "修改失敗!": End
按以上思路,我們可以很方便快捷地對注冊表進(jìn)行增、刪、改等操作,是不是很簡單?
轉(zhuǎn)載于:https://my.oschina.net/bigfool007139/blog/397286
總結(jié)
以上是生活随笔為你收集整理的使用vb对注册机进行编程的全部內(nèi)容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: labview前面板设计实例-油压测试系
- 下一篇: 我和《窗边的小豆豆》