如何在vba中用WScript.WshShell读取注册表的键值数据?

WScript对象是微软Windows 脚本宿主的根对象(Microsoft Windows Script Host ),WshShell是用于对Windows 内核的访问对象,它是WScript对象的子对象。

WshShell对象可以操作注册表,创建快捷方式,或者访问系统文件夹,还可以处理环境变量等。

使用WshShell对象的RegRead方法可以读取注册表的键值的数据,它的语法如下:

object.RegRead(strName)

其中参数strName可以是注册表的键名称,也可以是注册表的键值名称。

当指定的是键名称时,必须在最后输入反斜杠符号,比如:“HKEY_CURRENT_USER\Software\Microsoft\Office\15.0\Excel\StatusBar\”,否则会报错。

当指定的是注册表键的名称时,读取的是该键的默认值的数据。

当指定的是键值名称时,不需要在最后输入反斜杠符号,比如:HKEY_CURRENT_USER\Software\Microsoft\Office\15.0\Excel\StatusBar\MacroRecord。

比如我们要读取注册表的键“HKEY_CURRENT_USER\Software\Microsoft\Office\15.0\Excel\StatusBar”的值“MacroRecord”的数据,可以使用如下的代码:

Sub QQ1722187970()
    Dim oWShell
    Set oWShell = CreateObject("WScript.Shell")
    Dim sValue As String
    Dim sKey As String
    '键的名称
    sKey = "HKEY_CURRENT_USER\Software\Microsoft\Office\15.0\Excel\StatusBar"
    '键值的名称
    sValue = "MacroRecord"
    With oWShell
        'sKey & "\"返回的是键的默认键值的数据
        Debug.Print .RegRead(sKey & "\")
        'sKey & "\" & sValue返回的是键的指定键值的数据
        Debug.Print .RegRead(sKey & "\" & sValue)
        '没有加结尾反斜杠无法返回键的默认键值数据,会报错
        Debug.Print .RegRead(sKey)
    End With
End Sub

 

       

发表评论