在 VB 中只能使用 API 函数来解决。
解决方案 »
- VB-PowerWrap4.1打包程序后运行缓慢 杀毒软件误报
- 买了台电脑,小散
- WinSocket的状态总是7???
- 工作组环境下,如何获取局域网内任意一台主机共享文件夹和隐藏共享
- 我作的dcom版的库管程序,只开了个头,唉,做不下去,特别是业务流程如何在程序体现才严密,模块间如何关联才做到恰如其分,数据库如何设
- 怎样在sql语句的执行结果中加行号?
- 有关vb运行中的问题!!
- 用vb怎么实现两个文件内容的比较啊?
- 公告VB的BUG round(12.25,1 )竟然等于12.2 这是四舍五入函数大家小心了
- vbz中调用DOS下文件的问题。急
- 如何添加一种输入法
- 编程中的注册问题,若回答对,再加100分!!
http://www.sqreg.com/file/vb/reg_01.htm
http://www.sqreg.com/file/vb/reg_02.htm
http://www.sqreg.com/file/vb/reg_03.htm
http://www.sqreg.com/file/vb/reg_04.htm
http://www.sqreg.com/file/vb/reg_05.htm
http://www.sqreg.com/file/vb/reg_06.htm
http://www.sqreg.com/file/vb/reg_07.htm
Public Const REG_DWORD = 4
Public Const HKEY_LOCAL_MACHINE = &H80000002
Public Const ERROR_SUCCESS = 0&
Private Declare Function RegSetValueEx Lib "advapi32" Alias "RegSetValueExA" (ByVal hKey As Long, ByVal lpValueName As String, ByVal Reserved As Long, ByVal dwType As Long, ByVal szData As String, ByVal cbData As Long) As Long
Private Declare Function RegCloseKey Lib "advapi32" (ByVal hKey As Long) As Long
Private Declare Function RegCreateKey Lib "advapi32" Alias "RegCreateKeyA" (ByVal hKey As Long, ByVal lpSubKey As String, phkResult As Long) As Long
Private Declare Function RegQueryValueEx Lib "advapi32" Alias "RegQueryValueExA" (ByVal hKey As Long, ByVal lpValueName As String, ByVal lpReserved As Long, lpType As Long, ByVal lpData As Any, lpcbData As Long) As Long
'说 明: 写入注册表键值
'输 入: strName -- 键名;strValue -- 键值
'返回值: 成功 -- TRUE;失败 -- FALSEPublic Function WriteReg(ByRef strSubKey As String, ByRef strName As String, ByRef strValue As String) As Boolean
Dim lngReturn As Long '返回值
Dim lngReserved As Long '保留值
Dim subHKey As Long '键值指针
WriteReg = False
lngReturn = RegCreateKey(HKEY_LOCAL_MACHINE, strSubKey, subHKey)
If lngReturn <> ERROR_SUCCESS Then Exit Function
lngReturn = 0
lngReturn = RegSetValueEx(subHKey, strName, lngReserved, REG_SZ, strValue, Len(strValue))
If lngReturn <> ERROR_SUCCESS Then Exit Function
lngReturn = RegCloseKey(subHKey)
WriteReg = True
End Function'说 明: 查注册表键值
'输 入: strName -- 键名
'返回值: 键值Public Function GetRegValue(ByRef strSubKey As String, ByRef strName As String) As String
Dim lngReturn As Long '返回值
Dim lngReserved As Long '保留值
Dim subHKey As Long '键值指针
Dim strValue As String
Dim intPst As Integer
strValue = Space(254)
lngReturn = RegCreateKey(HKEY_LOCAL_MACHINE, strSubKey, subHKey)
If lngReturn <> ERROR_SUCCESS Then Exit Function
lngReturn = RegQueryValueEx(subHKey, strName, lngReserved, REG_SZ, strValue, 254)
If lngReturn <> ERROR_SUCCESS Then Exit Function
lngReturn = RegCloseKey(subHKey)
GetRegValue = Trim(strValue)
intPst = InStr(GetRegValue, Chr(0))
If intPst > 0 Then GetRegValue = Left(GetRegValue, intPst - 1)
End Function
不知怎么办
看这个例子:
http://www.csdn.net/dev/Visual%20Basic/source%20code/System%20Related/里的:
Registry.zip文件
API:regsetvalueex
'注册表操作函数用.
Const SYNCHRONIZE = &H100000
Const READ_CONTROL = &H20000
Const STANDARD_RIGHTS_READ = (READ_CONTROL)
Const STANDARD_RIGHTS_WRITE = (READ_CONTROL)
Const STANDARD_RIGHTS_ALL = &H1F0000Const KEY_QUERY_VALUE = &H1
Const KEY_ENUMERATE_SUB_KEYS = &H8
Const KEY_NOTIFY = &H10
Const KEY_SET_VALUE = &H2
Const KEY_CREATE_SUB_KEY = &H4
Const KEY_READ = ((READ_CONTROL Or KEY_QUERY_VALUE Or KEY_ENUMERATE_SUB_KEYS Or KEY_NOTIFY) And (Not SYNCHRONIZE))
Const KEY_WRITE = ((STANDARD_RIGHTS_WRITE Or KEY_SET_VALUE Or KEY_CREATE_SUB_KEY) And (Not SYNCHRONIZE))Const ERROR_SUCCESS = 0&Const REG_SZ = 1
Const REG_BINARY = 3
Const REG_DWORD = 4Const HKEY_CLASSES_ROOT = &H80000000
Const HKEY_CURRENT_USER = &H80000001
Const HKEY_LOCAL_MACHINE = &H80000002
Const HKEY_USERS = &H80000003
Const HKEY_PERFORMANCE_DATA = &H80000004
Const HKEY_CURRENT_CONFIG = &H80000005
Const HKEY_DYN_DATA = &H80000006Const REG_CREATED_NEW_KEY = &H1
Const REG_OPENED_EXISTING_KEY = &H2Private Declare Function RegOpenKeyEx Lib "advapi32.dll" Alias "RegOpenKeyExA" (ByVal hKey As Long, ByVal lpSubKey As String, ByVal ulOptions As Long, ByVal samDesired As Long, phkResult As Long) As Long
Private Declare Function RegCloseKey Lib "advapi32.dll" (ByVal hKey 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, lpType As Long, lpData As Any, lpcbData As Long) As Long
Private Declare Function RegCreateKeyEx Lib "advapi32.dll" Alias "RegCreateKeyExA" (ByVal hKey As Long, ByVal lpSubKey As String, ByVal Reserved As Long, ByVal lpClass As Long, ByVal dwOptions As Long, ByVal samDesired As Long, ByVal lpSecurityAttributes As Long, phkResult As Long, lpdwDisposition 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 RegSetValueEx Lib "advapi32.dll" Alias "RegSetValueExA" (ByVal hKey As Long, ByVal lpValueName As String, ByVal Reserved As Long, ByVal dwType As Long, lpData As Any, ByVal cbData As Long) As Long
Private Declare Function RegDeleteValue Lib "advapi32.dll" Alias "RegDeleteValueA" (ByVal hKey As Long, ByVal lpValueName As String) As Long'****************************
'****************************************************
'注册表操作函数
Public Function CheckRegistryKey(ByVal hKey As Long, ByVal KeyName As String) As Boolean
Dim handle As Long
If RegOpenKeyEx(hKey, KeyName, 0, KEY_READ, handle) = 0 Then
CheckRegistryKey = True
RegCloseKey handle
End If
End Function
Public Function GetRegistryValue(ByVal hKey As Long, ByVal KeyName As String, _
ByVal ValueName As String, ByVal KeyType As Integer, _
Optional DefaultValue As String = "") As String Dim handle As Long, resLong As Long
Dim resString As String, Length As Long
Dim resBinary() As Byte
GetRegistryValue = DefaultValue
If RegOpenKeyEx(hKey, KeyName, 0, KEY_READ, handle) Then Exit Function
Select Case KeyType
Case REG_DWORD
If RegQueryValueEx(handle, ValueName, 0, REG_DWORD, _
resLong, 4) = 0 Then
GetRegistryValue = Trim(CStr(resLong))
End If
Case REG_SZ
Length = 1024: resString = Space$(Length)
If RegQueryValueEx(handle, ValueName, 0, REG_SZ, _
ByVal resString, Length) = 0 Then
GetRegistryValue = Left$(resString, Length)
End If
Case REG_BINARY
Length = 4096
ReDim resBinary(Length - 1) As Byte
If RegQueryValueEx(handle, ValueName, 0, REG_BINARY, _
resBinary(0), Length) = 0 Then
ReDim Preserve resBinary(Length - 1) As Byte
Dim i As Long
For i = 0 To Length - 2
GetRegistryValue = GetRegistryValue & Trim(CStr(resBinary(i)))
Next
End If
Case Else
Err.Raise 1001, , "Unsupported value type"
End Select
RegCloseKey handle
End FunctionPublic Sub SetRegistryValue(ByVal hKey As Long, ByVal KeyName As String, ByVal ValueName As String, ByVal KeyType As Integer, value As String)
Dim handle As Long, lngValue As Long
Dim strValue As String
Dim binValue() As Byte, Length As Long
If RegOpenKeyEx(hKey, KeyName, 0, KEY_WRITE, handle) Then Exit Sub
Select Case KeyType
Case REG_DWORD
lngValue = Val(value)
RegSetValueEx handle, ValueName, 0, KeyType, lngValue, 4
Case REG_SZ
strValue = value
RegSetValueEx handle, ValueName, 0, KeyType, ByVal strValue, LenEx(strValue)
Case REG_BINARY
Length = LenEx(Trim(value))
Dim i As Long
ReDim binValue(Length - 1)
For i = 0 To Length - 1
binValue(i) = Val(Mid(value, i + 1, 1))
Next
Length = UBound(binValue) - LBound(binValue) + 1
RegSetValueEx handle, ValueName, 0, KeyType, binValue(LBound(binValue)), Length
End Select
RegCloseKey handle
End Sub
Public Function DeleteRegistryValue(ByVal hKey As Long, ByVal KeyName As String, ByVal lpValueName As String) As Long
Dim handle As Long
If RegOpenKeyEx(hKey, KeyName, 0, KEY_WRITE, handle) Then Exit Function
RegDeleteValue handle, lpValueName
RegCloseKey handle
End Function
Public Function CreateRegistryKey(ByVal hKey As Long, ByVal KeyName As String) As Long
Dim handle As Long, disp As Long
If RegCreateKeyEx(hKey, KeyName, 0, 0, 0, 0, 0, handle, disp) Then
CreateRegistryKey = 1
Else
If disp = REG_OPENED_EXISTING_KEY Then CreateRegistryKey = 0
RegCloseKey handle
End If
End FunctionPublic Function DeleteRegistryKey(ByVal hKey As Long, ByVal KeyName As String) As Long
If RegDeleteKey(hKey, KeyName) Then
DeleteRegistryKey = 1
Else
DeleteRegistryKey = 0
End If
End Function
VB声明
Declare Function RegSetValueEx Lib "advapi32.dll" Alias "RegSetValueExA" (ByVal hKey As Long, ByVal lpValueName As String, ByVal Reserved As Long, ByVal dwType As Long, lpData As Any, ByVal cbData As Long) As Long
参数:
hKey:Key Handle
lpValueName:Value名称
Reserved:保留参数,具体使用时置为0即可
dwType:数据类型
lpData:所设置的数据,注意这一参数被定义成lpData As Any,所以要传入字符串数据时别忘了在参数前加保留字ByVal
cbData:数据的长度。注意:如果写入的数据属于REG_SZ、REG_EXPAND_SZ、REG_MULTI_SZ类型时,则这个长度应该包含chr(0)字符。
返回值: =0,表示成功;≠0,表示失败Dim L As Long
L = 99999
RegSetValueEx hKey, "LongData", 0, REG_DWORD, L, 4