ACCESS读写注册表信息

2017-11-13 12:25:00
cg1
转贴
60

在Access应用程序中,我们有时需要对注册表做一些更改以更好地展示Access的用户体验。

如何对注册表进行修改呢?这里列举3种方法。

方法一:

直接将要修改的键值保存为一个 *.reg 文件,用注册表编辑器导出某一键值就可以自动生成对应的 *.REG 文件。然后用 shell 去运行 regedit /s c:\a.reg 即可。如:Shell "regedit /s c:\c.reg"

方法二:

使用 WSH 的 RegRead、RegWrite方法来读写

必须先引用:菜单 -> 工具 -> 引用 中去引用如下类库:Windows Script Host Object Model

Function SetTypeAQuestionForHelpBox()
'    本函数调用 WSH 来修改注册表达到去掉 OFFICE 组件右上角提问框的目的
    On Error Resume Next
    Dim a As New WshShell
'    如果采用后引用方式,也可以写如下代码:
'    Set a = CreateObject("WScript.Shell")
    
'    显示提问框,键入需要帮助的问题 这个框的设置选项是在注册表中的一下键位
'    HKEY_CURRENT_USER\Software\Microsoft\Office\14.0\Common\ToolBars\Settings\Microsoft Office Access AWDropdownHidden
'    先显示键的值。注意:如果你从来没有手动设置过“显示提问框”这个选项就没有以下键值。
'    因此以下这行会出错。前面已经使用过 On Error Resume Next 可以忽略该错误。
'    再修改它(或者建立该键,并赋值)
    a.RegWrite "HKCU\Software\Microsoft\Office\14.0\Common\ToolBars\Settings\Microsoft Office Access AWDropdownHidden", 1, "REG_DWORD"
End Function


方法三:
在VB中,我们还可以直接使用Win32SDK下相关的注册表API来修改和读取注册表。
调用的API函数,操作注册表
Option Explicit
Public Const HKEY_CLASSES_ROOT = &H80000000
Public Const HKEY_CURRENT_USER = &H80000001
Public Const HKEY_LOCAL_MACHINE = &H80000002
Public Const HKEY_USERS = &H80000003
Public Const HKEY_PERFORMANCE_DATA = &H80000004
Public Const HKEY_CURRENT_CONFIG = &H80000005
Public Const HKEY_DYN_DATA = &H80000006
Declare Function RegOpenKey Lib "advapi32.dll" Alias "RegOpenKeyA" (ByVal hKey As Long, ByVal lpSubKey As String, phkResult As Long) As Long
Declare Function RegCloseKey Lib "advapi32.dll" (ByVal hKey As Long) As Long
Sub Main()
    Dim ret As Long, hKey As Long, hKey2 As Long
    ret = RegOpenKey(HKEY_LOCAL_MACHINE, "SOFTWARE\Microsoft", hKey)
    If ret = 0 Then
        MsgBox "HKLM\SOFTWARE\Microsoft = " & hKey
    End If
    ret = RegOpenKey(hKey, "Windows\CurrentVersion", hKey2)
    If ret = 0 Then
        MsgBox "HKLM\SOFTWARE\Microsoft\Windows\CurrentVersion = " & hKey2
    End If
'    Use RegCreateKey function to create subkey "HKEY_LOCAL_MACHINE\SOFTWARE\Hongqt"
    ret = RegCreateKey(HKEY_LOCAL_MACHINE, "SOFTWARE\Hongqt", hKey)
    If Not ret Then
        MsgBox "Create HKEY_LOCAL_MACHINE\SOFTWARE\Hongqt SubKey Success"
    Else
        MsgBox "Create Subkey Operation Fail"
    End If
    RegCloseKey hKey
    RegCloseKey hKey2
End Sub

分享