对注册表进行编程的“捷径”
2008-04-09 04:42:14来源:互联网 阅读 ()
首先,注册表中各个主键和子键的键值,一般来说有以下几种类型:
①REG_SZ(普通字符串)
②REG_EXPAND_SZ(可展开式字串)
③REG_BINARY(二进制)
④REG_DWORD(长整数型,即十六进制值)。
他们在导出的注册表文件中的表示形式不尽相同。具体实例请参见后文。
其次,让我们来熟悉一下Regedit命令的用法及有关参数:
REGEDIT filename1
REGEDIT /E filename3 [regpath1]
REGEDIT /D regpath2
filename1 指定将要输入到注册表中的文件。
/E filename3 指定注册表的输出文件名。
regpath1 指定将要输出的注册表的键名(缺省为输出整个注册表)
/D regpath2 指定将要删除的注册表的键名
其中导出或导入的文件为一文本文件。格式如下:(小括号内为注释,……表示此处有省略)
REGEDIT4 (必须以此开头,注意大小写)
[HKEY_LOCAL_MACHINE\Software](每个子键与上一子键之间必须空一行,且子键用[]括起来)
@=""(@表示键值名为“默认”,键值为空串)
…… ……
[HKEY_LOCAL_MACHINE\Software\Microsoft\Windows\CurrentVersion]
"InstallType"=hex:03,00 (表示键名为"InstallType",键值为REG_BINARY(即二进制)类型 03 00)
"DevicePath"="C:\\WINDOWS\\INF"
(键"DevicePath"是普通字符串,即 REG_SZ 类型。当字符串中含有路径“\”等特殊字符时,约定
用“\\”代替“\”,用“\n”和“\"”来代替回车和 "字符)
…… ……
[HKEY_LOCAL_MACHINE\Software\Microsoft\Windows\CurrentVersion\Setup\SetupX\Cert]
"RG2CATDB Return"=dword:00000000(dword:表示该键值REG_DWORD(长整数型,即十六进制值)
[HKEY_LOCAL_MACHINE\Software\Microsoft\Windows\CurrentVersion\MS-DOSOptions\Smartdrv]
…… ……
"Autoexec.Bat"="LoadHigh %WINDIR%\\SmartDrv"(含有一对%的字符串是可展开式字串,即REG_EXPAND_SZ类型,此处%WINDIR%表示WINDOWS的工作目录)
例如:可用以下代码将指定的子键路径[HKEY_LOCAL_MACHINE\Software]的默认值修改为字符串:“此处值已修改!”
stt = "HKEY_LOCAL_MACHINE"
a = Shell("regedit /e c:\windows\temp\temp.txt " & stt)
'导出要修改的注册表分支
If a = 0 Then
MsgBox "导出错误!": End '可能是子键名称错误
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$ = "@=""默认值已修改!"""
Print #2, b$
MsgBox "原来的值为:" & Mid$(aa$, 3) & "即将改为:" &
Mid$(b$, 3), vbOKOnly, "注册表变化"
End If
If aa$ = regpath Then
Print #2, b$
regwrite = True
'说明下一行为所要修改的行,以便下次循环时对b$进行修改
Else
regwrite = flase '不是要修改的行
End If
' If Left(aa$, 2) <> "@=" And
b$ = "@=""默认值已修改!""" Then
Print #2, aa$
'如果子键[HKEY_LOCAL_MACHINE\Software]中原来未设置默
认值,此时相当于在文件#1处插入b$。
Loop Until EOF(1)
Close
a = Shell("regedit c:\windows\temp\temp1.txt ")
'将修改后的内容导入到注册表中
If a = 0 Then MsgBox "修改失败!": End
按以上思路,我们可以很方便快捷地对注册表进行增、删、改等操作,是不是很简单?
156
标签:
版权申明:本站文章部分自网络,如有侵权,请联系:west999com@outlook.com
特别注意:本站所有转载文章言论不代表本站观点,本站所提供的摄影照片,插画,设计作品,如需使用,请与原作者联系,版权归原作者所有
上一篇:将程序加入启动组
下一篇:VB.NET中的多线程开发
IDC资讯: 主机资讯 注册资讯 托管资讯 vps资讯 网站建设
网站运营: 建站经验 策划盈利 搜索优化 网站推广 免费资源
网络编程: Asp.Net编程 Asp编程 Php编程 Xml编程 Access Mssql Mysql 其它
服务器技术: Web服务器 Ftp服务器 Mail服务器 Dns服务器 安全防护
软件技巧: 其它软件 Word Excel Powerpoint Ghost Vista QQ空间 QQ FlashGet 迅雷
网页制作: FrontPages Dreamweaver Javascript css photoshop fireworks Flash