怎样在注册表中添加新的主键和键值
vb吧
全部回复
仅看楼主
level 2
fdp47 楼主
一个VB程序,在安装时需要修改注册表,在其中添加新的主键和键值。哪位高手知道方法,请帮个忙!谢谢!
2006年01月11日 00点01分 1
level 0
SaveSetting 语句
2006年01月11日 01点01分 2
level 13
注册表我不熟, 但你好好研究下面这代码,也许对你有些帮助.'修改注册表'Private Const READ_CONTROL = &H20000'Private Const STANDARD_RIGHTS_READ = (READ_CONTROL)'Private Const STANDARD_RIGHTS_WRITE = (READ_CONTROL)'Private Const KEY_QUERY_VALUE = &H1'Private Const KEY_SET_VALUE = &H2'Private Const KEY_CREATE_SUB_KEY = &H4'Private Const KEY_ENUMERATE_SUB_KEYS = &H8'Private Const KEY_NOTIFY = &H10'Private Const KEY_CREATE_LINK = &H20'Private Const SYNCHRONIZE = &H100000'Private Const STANDARD_RIGHTS_ALL = &H1F0000'Private Const KEY_READ = ((STANDARD_RIGHTS_READ Or KEY_QUERY_VALUE Or KEY_ENUMERATE_SUB_KEYS Or KEY_NOTIFY) And (Not SYNCHRONIZE))'Private Const KEY_WRITE = ((STANDARD_RIGHTS_WRITE Or KEY_SET_VALUE Or KEY_CREATE_SUB_KEY) And (Not SYNCHRONIZE))'Private Const KEY_ALL_ACCESS = ((STANDARD_RIGHTS_ALL Or KEY_QUERY_VALUE Or KEY_SET_VALUE Or KEY_CREATE_SUB_KEY Or KEY_ENUMERATE_SUB_KEYS Or KEY_NOTIFY Or KEY_CREATE_LINK) And (Not SYNCHRONIZE))'Private Const KEY_EXECUTE = ((KEY_READ) And (Not SYNCHRONIZE))'Private Const ERROR_SUCCESS = 0&'Private 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 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 RegCloseKey Lib "advapi32.dll" (ByVal Hkey As Long) As Long'Private Function GetRegEntry200(cboStartKey As String, RegistrationPath As String, strValName As String) As Variant' Dim lngType As Long, varRetString As Variant' Dim lngI As Long, intChar As Integer' varRetString = sdaGetRegEntry(cboStartKey, RegistrationPath, strValName, lngType)' If Len(varRetString) Then' For lngI = 1 To Len(varRetString)' intChar = Asc(Mid(varRetString, lngI, 1))' If intChar > 15 Then' GetRegEntry200 = GetRegEntry200 & Hex(intChar) & " "' Else' GetRegEntry200 = GetRegEntry200 & "0" & Hex(intChar) & " "' End If' Next lngI' End If'End Function'Private Function GetRegEntry98(cboStartKey As String, RegistrationPath As String, strValName As String) As Variant' Dim lngType As Long, varRetString As Variant' varRetString = sdaGetRegEntry(cboStartKey, RegistrationPath, strValName, lngType)' GetRegEntry98 = varRetString'End Function'Function sdaGetRegEntry(strKey As String, _' strSubKeys As String, strValName As String, _' lngType As Long) As String' '* Demonstration of win32 API's to query' ' the system registry' ' Stu Alderman -- 2/30/96' On Error GoTo sdaGetRegEntry_Err' Dim lngResult As Long, lngKey As Long' Dim lngHandle As Long, lngcbData As Long' Dim strRet As String' Select Case strKey' Case "HKEY_CLASSES_ROOT": lngKey = &H80000000' Case "HKEY_CURRENT_CONFIG": lngKey = &H80000005' Case "HKEY_CURRENT_USER": lngKey = &H80000001' Case "HKEY_DYN_DATA": lngKey = &H80000006
2006年01月11日 01点01分 3
level 13
' Case "HKEY_LOCAL_MACHINE": lngKey = &H80000002' Case "HKEY_PERFORMANCE_DATA": lngKey = &H80000004' Case "HKEY_USERS": lngKey = &H80000003' Case Else: Exit Function' End Select' If Not ERROR_SUCCESS = RegOpenKeyEx(lngKey, _' strSubKeys, 0&, KEY_READ, lngHandle) Then Exit Function' lngResult = RegQueryValueEx(lngHandle, strValName, 0&, lngType, ByVal strRet, lngcbData)' strRet = Space(lngcbData)' lngResult = RegQueryValueEx(lngHandle, strValName, 0&, lngType, ByVal strRet, lngcbData)' If Not ERROR_SUCCESS = RegCloseKey(lngHandle) Then lngType = -1&' sdaGetRegEntry = strRet'sdaGetRegEntry_Exit:' On Error GoTo 0' Exit Function''sdaGetRegEntry_Err:' lngType = -1&' MsgBox Err & "> " & Error$, 16, "GenUtils/sdaGetRegEntry"' Resume sdaGetRegEntry_Exit'End Function'Private Function GetRegEntry200(cboStartKey As String, RegistrationPath As String, strValName As String) As Variant' Dim lngType As Long, varRetString As Variant' Dim lngI As Long, intChar As Integer' varRetString = sdaGetRegEntry(cboStartKey, RegistrationPath, strValName, lngType)' If Len(varRetString) Then' For lngI = 1 To Len(varRetString)' intChar = Asc(Mid(varRetString, lngI, 1))' If intChar > 15 Then' GetRegEntry200 = GetRegEntry200 & Hex(intChar) & " "' Else' GetRegEntry200 = GetRegEntry200 & "0" & Hex(intChar) & " "' End If' Next lngI' End If'End Function'Private Function GetRegEntry98(cboStartKey As String, RegistrationPath As String, strValName As String) As Variant' Dim lngType As Long, varRetString As Variant' varRetString = sdaGetRegEntry(cboStartKey, RegistrationPath, strValName, lngType)' GetRegEntry98 = varRetString'End Function'Function sdaGetRegEntry(strKey As String, _' strSubKeys As String, strValName As String, _' lngType As Long) As String' '* Demonstration of win32 API's to query' ' the system registry' ' Stu Alderman -- 2/30/96' On Error GoTo sdaGetRegEntry_Err' Dim lngResult As Long, lngKey As Long' Dim lngHandle As Long, lngcbData As Long' Dim strRet As String' Select Case strKey' Case "HKEY_CLASSES_ROOT": lngKey = &H80000000' Case "HKEY_CURRENT_CONFIG": lngKey = &H80000005' Case "HKEY_CURRENT_USER": lngKey = &H80000001' Case "HKEY_DYN_DATA": lngKey = &H80000006' Case "HKEY_LOCAL_MACHINE": lngKey = &H80000002' Case "HKEY_PERFORMANCE_DATA": lngKey = &H80000004' Case "HKEY_USERS": lngKey = &H80000003' Case Else: Exit Function' End Select' If Not ERROR_SUCCESS = RegOpenKeyEx(lngKey, _' strSubKeys, 0&, KEY_READ, lngHandle) Then Exit Function' lngResult = RegQueryValueEx(lngHandle, strValName, 0&, lngType, ByVal strRet, lngcbData)' strRet = Space(lngcbData)' lngResult = RegQueryValueEx(lngHandle, strValName, 0&, lngType, ByVal strRet, lngcbData)' If Not ERROR_SUCCESS = RegCloseKey(lngHandle) Then lngType = -1&' sdaGetRegEntry = strRet'sdaGetRegEntry_Exit:' On Error GoTo 0' Exit Function''sdaGetRegEntry_Err:' lngType = -1&' MsgBox Err & "> " & Error$, 16, "GenUtils/sdaGetRegEntry"' Resume sdaGetRegEntry_Exit
2006年01月11日 01点01分 4
level 13
'End Function'Private Function GetRegEntry200(cboStartKey As String, RegistrationPath As String, strValName As String) As Variant' Dim lngType As Long, varRetString As Variant' Dim lngI As Long, intChar As Integer' varRetString = sdaGetRegEntry(cboStartKey, RegistrationPath, strValName, lngType)' If Len(varRetString) Then' For lngI = 1 To Len(varRetString)' intChar = Asc(Mid(varRetString, lngI, 1))' If intChar > 15 Then' GetRegEntry200 = GetRegEntry200 & Hex(intChar) & " "' Else' GetRegEntry200 = GetRegEntry200 & "0" & Hex(intChar) & " "' End If' Next lngI' End If'End Function'Private Function GetRegEntry98(cboStartKey As String, RegistrationPath As String, strValName As String) As Variant' Dim lngType As Long, varRetString As Variant' varRetString = sdaGetRegEntry(cboStartKey, RegistrationPath, strValName, lngType)' GetRegEntry98 = varRetString'End Function'Function sdaGetRegEntry(strKey As String, _' strSubKeys As String, strValName As String, _' lngType As Long) As String' '* Demonstration of win32 API's to query' ' the system registry' ' Stu Alderman -- 2/30/96' On Error GoTo sdaGetRegEntry_Err' Dim lngResult As Long, lngKey As Long' Dim lngHandle As Long, lngcbData As Long' Dim strRet As String' Select Case strKey' Case "HKEY_CLASSES_ROOT": lngKey = &H80000000' Case "HKEY_CURRENT_CONFIG": lngKey = &H80000005' Case "HKEY_CURRENT_USER": lngKey = &H80000001' Case "HKEY_DYN_DATA": lngKey = &H80000006' Case "HKEY_LOCAL_MACHINE": lngKey = &H80000002' Case "HKEY_PERFORMANCE_DATA": lngKey = &H80000004' Case "HKEY_USERS": lngKey = &H80000003' Case Else: Exit Function' End Select' If Not ERROR_SUCCESS = RegOpenKeyEx(lngKey, _' strSubKeys, 0&, KEY_READ, lngHandle) Then Exit Function' lngResult = RegQueryValueEx(lngHandle, strValName, 0&, lngType, ByVal strRet, lngcbData)' strRet = Space(lngcbData)' lngResult = RegQueryValueEx(lngHandle, strValName, 0&, lngType, ByVal strRet, lngcbData)' If Not ERROR_SUCCESS = RegCloseKey(lngHandle) Then lngType = -1&' sdaGetRegEntry = strRet'sdaGetRegEntry_Exit:' On Error GoTo 0' Exit Function''sdaGetRegEntry_Err:' lngType = -1&' MsgBox Err & "> " & Error$, 16, "GenUtils/sdaGetRegEntry"' Resume sdaGetRegEntry_Exit'End Function'Private Function GetRegEntry200(cboStartKey As String, RegistrationPath As String, strValName As String) As Variant' Dim lngType As Long, varRetString As Variant' Dim lngI As Long, intChar As Integer' varRetString = sdaGetRegEntry(cboStartKey, RegistrationPath, strValName, lngType)' If Len(varRetString) Then' For lngI = 1 To Len(varRetString)' intChar = Asc(Mid(varRetString, lngI, 1))' If intChar > 15 Then' GetRegEntry200 = GetRegEntry200 & Hex(intChar) & " "' Else' GetRegEntry200 = GetRegEntry200 & "0" & Hex(intChar) & " "' End If' Next lngI' End If'End Function'Private Function GetRegEntry98(cboStartKey As String, RegistrationPath As String, strValName As String) As Variant' Dim lngType As Long, varRetString As Variant
2006年01月11日 01点01分 5
level 2
fdp47 楼主
感谢各位,我回去好好研究一下。
2006年01月11日 08点01分 7
1