VB读写注册表

巡山小妖精
668次浏览
2020年08月15日 13:59
最佳经验
本文由作者推荐

古代名言-盐道街中学


VB读写注册表
今天,我们将制作一个能读写注册表的程序。程序运行后,可以选择要 添加、删除、
修改或查询的键和键值。程序运行结果如图所示。

运行结果

技术要点
 操纵注册表的API函数
 添加、删除键和键值
 查询键值
实现过程

新建项目
打开Visual ,选择“新建项目”,在项目类型窗口中选择“Visual Basic项
目”,在模板窗口中选择“ Windows应用程序”,在名称域中输入“Rwregister”,然后选择
保存路径。单击“确 认”。

添加控件和模块
向当前窗体上添加两组Group控件,每组上有两个 RadioButton选项按钮,将它们分
别做成控件数组;四个Label控件,用作说明之用;一 个ComboBox控件和三个TextBox
控件,分别用于输入相应的子键、键名和键值;四个Bu tton控件用于实现相应的功能。

设置属性
将Label控件、Butto n按钮、RadioButton控件的Text属性设置为和界面一致。将TextBox
控件的Te xt属性清空。



添加代码
由于本实例使用的API函数和常数比较多,在此仅列出主要的声明部分。
' 这是在模块中添加的代码
Option Strict Off
Public Declare Function RegCreateKeyEx Lib
(ByVal hKey As Long, ByVal lpSubKey As String, ByVal Reserved As Long, ByVal
lpClass As String, ByVal dwOptions As Long, ByVal samDesired As Long,
lpSecurityAttributes As SECURITY_ATTRIBUTES, phkResult As Long,
lpdwDisposition As Long) As Long
Public Declare Function RegDeleteKey Lib
(ByVal hKey As Long, ByVal lpSubKey As String) As Long
Public Declare Function RegDeleteValue Lib
(ByVal hKey As Long, ByVal lpValueName As String) As Long
Public Declare Function RegCloseKey Lib
Public Declare Function RegOpenKey Lib
hKey As Long, ByVal lpSubKey As String, phkResult As Long) As Long
Public Declare Function RegSetValue Lib
hKey As Long, ByVal lpSubKey As String, ByVal dwType As Long, ByVal lpData As
String, ByVal cbData As Long) As Long
Public Type SECURITY_ATTRIBUTES
nLength As Long
lpSecurityDescriptor As Long
bInheritHandle As Long
End Type
' 设置键值
Public Function SetKeyValue(ByRef lPredefinedKey As Integer, ByRef sKeyName As
String, ByRef sValueName As String, ByRef vValueSetting As Object, ByRef
lValueType As Integer) As Object
Dim lRetVal As Integer
Dim hKey As Integer
lRetVal = RegOpenKeyEx(lPredefinedKey, sKeyName, 0, KEY_ALL_ACCESS,
hKey)
lRetVal = SetValueEx(hKey, sValueName, lValueType, vValueSetting)
RegCloseKey(hKey)
End Function
' 查询键值
Public Function QueryValue(ByRef lPredefinedKey As Integer, ByRef sKeyName As
String, ByRef sValueName As String) As Object
Dim lRetVal As Integer
Dim hKey As Integer
Dim vValue As Object
lRetVal = RegOpenKeyEx(lPredefinedKey, sKeyName, 0, KEY_ALL_ACCESS,
hKey)
lRetVal = QueryValueEx(hKey, sValueName, vValue)
QueryValue = vValue
RegCloseKey(hKey)


End Function
' 新建键
Public Function CreateNewKey(ByRef lPredefinedKey As Integer, ByRef
sNewKeyName As String) As Object
Dim hNewKey As Integer
Dim lRetVal As Integer
Dim SA As SECURITY_ATTRIBUTES
lRetVal = RegCreateKeyEx(lPredefinedKey, sNewKeyName, 0, Nothing,
REG_OPTION_NON_VOLATILE, KEY_ALL_ACCESS, SA, hNewKey, lRetVal)
RegCloseKey(hNewKey)
End Function
' 删除键值
Public Function DeleteValue(ByRef lPredefinedKey As Integer, ByRef sKeyName As
String, ByRef sValueName As String) As Object
Dim lRetVal As Integer
Dim hKey As Integer
lRetVal = RegOpenKeyEx(lPredefinedKey, sKeyName, 0, KEY_ALL_ACCESS,
hKey)
lRetVal = RegDeleteValue(hKey, sValueName)
RegCloseKey(hKey)
End Function
'删除键
Public Function DeleteKey(ByRef lPredefinedKey As Integer, ByRef sKeyName As
String) As Object
Dim lRetVal As Integer
Dim hKey As Integer
lRetVal = RegOpenKeyEx(lPredefinedKey, sKeyName, 0, KEY_ALL_ACCESS,
hKey)
lRetVal = RegDeleteKey(lPredefinedKey, sKeyName)
RegCloseKey(hKey)
End Function
' 下面这些代码是在窗体中的
' 添加键和键值
Private Sub cmdadd_Click(ByVal eventSender As , ByVal eventArgs As
rgs) Handles
Dim resmainkey As Integer
mainkey = mString(Combo1, edIndex)
resmainkey = ResultMainKey(mainkey)
' 判断操作的对象是键还是键值
If opttype(0).Checked Then
CreateNewKey(resmainkey, ())
Else
' 判断添加的是数值还是字符串
If numtype(0).Checked Then
SetKeyValue(resmainkey, (), (), (),
REG_DWORD)
Else


SetKeyValue(resmainkey, (), (), (),
REG_SZ)
End If
End If
End Sub
' 删除键和键值通过不同的函数来进行
Private Sub cmddelete_Click(ByVal eventSender As , ByVal eventArgs As
rgs) Handles
Dim resmainkey As Integer
mainkey = mString(Combo1, edIndex)
resmainkey = ResultMainKey(mainkey)
If opttype(0).Checked Then
DeleteKey(resmainkey, ())
Else
DeleteValue(resmainkey, (), ())
End If
End Sub
' 查询键值
Private Sub cmdquery_Click(ByVal eventSender As , ByVal eventArgs As
rgs) Handles
Dim resmainkey As Integer
mainkey = mString(Combo1, edIndex)
resmainkey = ResultMainKey(mainkey)
= QueryValue(resmainkey, (), ())
End Sub
' 程序启动时的代码
Private Sub Form1_Load(ByVal eventSender As , ByVal eventArgs As
rgs) Handles
With Combo1
.(
.(
.(
.(
.(
.(
.SelectedIndex = 0
End With
End Sub

运行程序
单击菜单“调试|启动”或单击
小结
图标运行程序。
通过对本实例的 学习,相信读者已经掌握了关于注册表的有关操作。读者可以使用注
册表保存自己的设置,将本实例与其 他实例结合,可以做出更优秀的程序出来


江西信息应用职业技术学院-转正自我鉴定范文


华中农业大学研究生-祝福语留言


山东教育招生考试网-中南大学自主招生


扬州中考分数线-论语十二则


北京邮电大学招生-郎溪中学


吉林艺术学院研究生-自学考试自我鉴定


遗憾也美丽-武警学院


微信红包怎么发-昆明滇池中学网站