我现所知的VB写入注册表信息的三种方法总结如下:
1,通过VB自身带的写入注册表函数SaveSetting(appname,section,key[,value)和GetSetting(appname,section,key[,default])还有DeleteSetting(apppname)三个函数来完成,这三个函数很简单,参数分别对应:应用程序名,区段,键,值,至于什么是程序名呀区段呀,只不过是注册表的组织形式,就像文件夹里的文件件的。。,就是这样呵呵。。来个例子吧!
Private Sub Command1_Click()
SaveSetting "蚯蚓", "小蚯蚓", "top", Form1.Top
SaveSetting "蚯蚓", "小蚯蚓", "Left", Form1.Left
SaveSetting "蚯蚓", "小蚯蚓", "Width", Form1.Width
SaveSetting "蚯蚓", "小蚯蚓", "Height", Form1.Height
End Sub
这个一执行,注册表里的HKEY_CURRENT_USER/Software/VB/VBAndVBAProgramSettings下呢就这出现蚯蚓,点开蚯蚓,就出现小蚯蚓,然后就记录着四个值,用来记录当前窗体位置,这时候,注册表就好像是一个文件,它记录下了一些信息,下次我们运行程序的时候再用GetSetting把它调出来,另外在卸载软件时还要把它DeleteSetting。很简单,,但是很遗憾,它只能存在HKEY_CURRENT_USER/Software/VBAndVBAProgramSettings下。
2,要想任意的操纵注册表,当然非API不可了,借用一下别人的例程
你希望你的程序能访问 Windows 注册表吗?当然,能访问庞大的 Windows 注册表是每个程序设计者都希望的事情,那么我就告诉你如何通过API函数访问 Windows 注册表吧。请先看看下面的 Visual Basic 程序:
'根键常数
Const HKEY_CLASSES_ROOT = -2147483648#
Const HKEY_CURRENT_USER = -2147483647#
Const HKEY_LOCAL_MACHINE = -2147483646#
Const HKEY_USERS = -2147483645#
'键值类型
Const REG_SZ = 1& '字符串值
Const REG_BINARY = 3& '二进制值
Const REG_DWORD = 4& 'DWORD 值
'声明有关API函数
Private Declare Function RegCreateKey Lib "advapi32.dll" Alias "RegCreateKeyA" _
( _
ByVal hKey As Long, _
ByVal lpSubKey As String, _
ByRef phkResult As Long _
) As Long '建立一个新的主键
Private Declare Function RegOpenKey Lib "advapi32.dll" Alias "RegOpenKeyA" _
( _
ByVal hKey As Long, _
ByVal lpSubKey As String, _
ByRef phkResult As Long _
) As Long '打开一个主键
Private Declare Function RegDeleteKey Lib "advapi32.dll" Alias "RegDeleteKeyA" _
( _
ByVal hKey As Long, _
ByVal lpSubKey As String _
) As Long '删除一个主键
Private Declare Function RegCloseKey Lib "advapi32.dll" _
( _
ByVal hKey As Long _
) As Long '关闭一个主键
Public Declare Function RegSetValue Lib "advapi32.dll" Alias "RegSetValueA" (ByVal hKey As Long, ByVal lpSubKey As String, ByVal dwType As Long, ByVal lpData As String, ByVal cbData As Long) As Long'
Private Declare Function RegQueryValueEx Lib "advapi32.dll" Alias "RegQueryValueExA" _
( _
ByVal hKey As Long, _
ByVal lpValueName As String, _
ByVal lpReserved As Long, _
ByRef lpType As Long, _
ByVal lpData As Any, _
ByRef lpcbData As Long _
) As Long '查询一个键值,lpData应由缺省的ByRef型改为ByVal型
Private Declare Function RegDeleteValue Lib "advapi32.dll" Alias "RegDeleteValueA" _
( _
ByVal hKey As Long, _
ByVal lpValueName As String _
) As Long '删除一个键值
'主过程
Sub Main()
Dim nKeyHandle As Long, nValueType As Long, nLength As Long
Dim sValue As String
sValue = "I am a winner!"
Call RegCreateKey(HKEY_CURRENT_USER, "New Registry Key", nKeyHandle)
Call RegSetValueEx(nKeyHandle, "My Value", 0, REG_SZ, sValue, 255)
sValue = Space(255)
nLength = 255
Call RegQueryValueEx(nKeyHandle, "My Value", 0, nValueType, sValue, nLength)
MsgBox sValue
Call RegDeleteValue(nKeyHandle, "My Value")
Call RegDeleteKey(HKEY_CURRENT_USER, "New Registry Key")
Call RegCloseKey(nKeyHandle)
End Sub
真是不好意思,这个例程可能是V5滴,不过用法都齐了只是其中的API声明有点出入,反正API调用就是用到时再查杳拷拷。OK
3,两斧头砍完了,第三斧头就是使用wscript用windows的脚本语言来完成注册表编辑,
首先引用Windows Script Host Object Model
定义个对象:Set Reg=CreateObject("wscript.shell")
然后调用方法写写写 Reg.RegWrite ("要写入的值的名称", "值" .RegRead 读键值)
例子:myrun = Reg.RegWrite("HKLM/SOFTWARE/Microsoft/Windows/CurrentVersion/Run/cdplayer", "C:/WINNT/system32/cdplayer.exe", "REG_SZ")
删除 Reg.RegDelete ("要写入的值的名称")
例子:mynorun = Reg.RegDelete("HKLM/SOFTWARE/Microsoft/Windows/CurrentVersion/Run/cdplayer")
读取 Reg.RegRead ("要写入的值的名称")
例子:Reg.RegRead("HKLM/SOFTWARE/Rising/Rav/NetID")
好了,好了,要熄灯了先写到这儿了
1,通过VB自身带的写入注册表函数SaveSetting(appname,section,key[,value)和GetSetting(appname,section,key[,default])还有DeleteSetting(apppname)三个函数来完成,这三个函数很简单,参数分别对应:应用程序名,区段,键,值,至于什么是程序名呀区段呀,只不过是注册表的组织形式,就像文件夹里的文件件的。。,就是这样呵呵。。来个例子吧!
Private Sub Command1_Click()
SaveSetting "蚯蚓", "小蚯蚓", "top", Form1.Top
SaveSetting "蚯蚓", "小蚯蚓", "Left", Form1.Left
SaveSetting "蚯蚓", "小蚯蚓", "Width", Form1.Width
SaveSetting "蚯蚓", "小蚯蚓", "Height", Form1.Height
End Sub
这个一执行,注册表里的HKEY_CURRENT_USER/Software/VB/VBAndVBAProgramSettings下呢就这出现蚯蚓,点开蚯蚓,就出现小蚯蚓,然后就记录着四个值,用来记录当前窗体位置,这时候,注册表就好像是一个文件,它记录下了一些信息,下次我们运行程序的时候再用GetSetting把它调出来,另外在卸载软件时还要把它DeleteSetting。很简单,,但是很遗憾,它只能存在HKEY_CURRENT_USER/Software/VBAndVBAProgramSettings下。
2,要想任意的操纵注册表,当然非API不可了,借用一下别人的例程
你希望你的程序能访问 Windows 注册表吗?当然,能访问庞大的 Windows 注册表是每个程序设计者都希望的事情,那么我就告诉你如何通过API函数访问 Windows 注册表吧。请先看看下面的 Visual Basic 程序:
'根键常数
Const HKEY_CLASSES_ROOT = -2147483648#
Const HKEY_CURRENT_USER = -2147483647#
Const HKEY_LOCAL_MACHINE = -2147483646#
Const HKEY_USERS = -2147483645#
'键值类型
Const REG_SZ = 1& '字符串值
Const REG_BINARY = 3& '二进制值
Const REG_DWORD = 4& 'DWORD 值
'声明有关API函数
Private Declare Function RegCreateKey Lib "advapi32.dll" Alias "RegCreateKeyA" _
( _
ByVal hKey As Long, _
ByVal lpSubKey As String, _
ByRef phkResult As Long _
) As Long '建立一个新的主键
Private Declare Function RegOpenKey Lib "advapi32.dll" Alias "RegOpenKeyA" _
( _
ByVal hKey As Long, _
ByVal lpSubKey As String, _
ByRef phkResult As Long _
) As Long '打开一个主键
Private Declare Function RegDeleteKey Lib "advapi32.dll" Alias "RegDeleteKeyA" _
( _
ByVal hKey As Long, _
ByVal lpSubKey As String _
) As Long '删除一个主键
Private Declare Function RegCloseKey Lib "advapi32.dll" _
( _
ByVal hKey As Long _
) As Long '关闭一个主键
Public Declare Function RegSetValue Lib "advapi32.dll" Alias "RegSetValueA" (ByVal hKey As Long, ByVal lpSubKey As String, ByVal dwType As Long, ByVal lpData As String, ByVal cbData As Long) As Long'
Private Declare Function RegQueryValueEx Lib "advapi32.dll" Alias "RegQueryValueExA" _
( _
ByVal hKey As Long, _
ByVal lpValueName As String, _
ByVal lpReserved As Long, _
ByRef lpType As Long, _
ByVal lpData As Any, _
ByRef lpcbData As Long _
) As Long '查询一个键值,lpData应由缺省的ByRef型改为ByVal型
Private Declare Function RegDeleteValue Lib "advapi32.dll" Alias "RegDeleteValueA" _
( _
ByVal hKey As Long, _
ByVal lpValueName As String _
) As Long '删除一个键值
'主过程
Sub Main()
Dim nKeyHandle As Long, nValueType As Long, nLength As Long
Dim sValue As String
sValue = "I am a winner!"
Call RegCreateKey(HKEY_CURRENT_USER, "New Registry Key", nKeyHandle)
Call RegSetValueEx(nKeyHandle, "My Value", 0, REG_SZ, sValue, 255)
sValue = Space(255)
nLength = 255
Call RegQueryValueEx(nKeyHandle, "My Value", 0, nValueType, sValue, nLength)
MsgBox sValue
Call RegDeleteValue(nKeyHandle, "My Value")
Call RegDeleteKey(HKEY_CURRENT_USER, "New Registry Key")
Call RegCloseKey(nKeyHandle)
End Sub
真是不好意思,这个例程可能是V5滴,不过用法都齐了只是其中的API声明有点出入,反正API调用就是用到时再查杳拷拷。OK
3,两斧头砍完了,第三斧头就是使用wscript用windows的脚本语言来完成注册表编辑,
首先引用Windows Script Host Object Model
定义个对象:Set Reg=CreateObject("wscript.shell")
然后调用方法写写写 Reg.RegWrite ("要写入的值的名称", "值" .RegRead 读键值)
例子:myrun = Reg.RegWrite("HKLM/SOFTWARE/Microsoft/Windows/CurrentVersion/Run/cdplayer", "C:/WINNT/system32/cdplayer.exe", "REG_SZ")
删除 Reg.RegDelete ("要写入的值的名称")
例子:mynorun = Reg.RegDelete("HKLM/SOFTWARE/Microsoft/Windows/CurrentVersion/Run/cdplayer")
读取 Reg.RegRead ("要写入的值的名称")
例子:Reg.RegRead("HKLM/SOFTWARE/Rising/Rav/NetID")
好了,好了,要熄灯了先写到这儿了