我想访问注册表中的一项: local machine -> software -> demo -> aaa; aaa的值是 hello world!  
请问代码应该怎么写呢?

解决方案 »

  1.   

    用API函数,
    和VB中使用API函数访问注册表一样。提供VB、VBA、Office二次开发
    免费咨询、有偿技术支持:
    CO.:Vansoft Workroom
    MSN:[email protected]
    Email:[email protected]
        [email protected]
    TEL:025-86685867(范)
      

  2.   

    '-------------------------------------------------------------------------------------------------------------
    '- 获得已存在的注册表关键字的值...
    '- 如果 ValueName="" 则返回 KeyName 项的默认值...
    '- 如果指定的注册表关键字不存在, 则返回空串...
    '- 参数说明: KeyRoot--根类型, KeyName--子项名称, ValueName--值项名称, ValueType--值项类型
    '-------------------------------------------------------------------------------------------------------------
    Public Function GetKeyValue(KeyRoot As KeyRoot, KeyName As String, ValueName As String, Optional ValueType As Long) As String
        Dim TempValue As String                             ' 注册表关键字的临时值
        Dim Value As String                                 ' 注册表关键字的值
        Dim ValueSize As Long                               ' 注册表关键字的值的实际长度
        TempValue = Space(1024)                             ' 存储注册表关键字的临时值的缓冲区
        ValueSize = 1024                                    ' 设置注册表关键字的值的默认长度
        
        ' 打开一个已存在的注册表关键字...
        RegOpenKeyEx KeyRoot, KeyName, 0, KEY_ALL_ACCESS, hKey
        
        ' 获得已打开的注册表关键字的值...
        RegQueryValueEx hKey, ValueName, 0, ValueType, ByVal TempValue, ValueSize
        
        ' 返回注册表关键字的的值...
        Select Case ValueType                                                        ' 通过判断关键字的类型, 进行处理
            Case REG_SZ, REG_MULTI_SZ, REG_EXPAND_SZ
                TempValue = Left$(TempValue, ValueSize - 1)                          ' 去掉TempValue尾部空格
                Value = TempValue
            Case REG_DWORD
                ReDim dValue(3) As Byte
                RegQueryValueEx hKey, ValueName, 0, REG_DWORD, dValue(0), ValueSize
                For i = 3 To 0 Step -1
                    Value = Value + String(2 - Len(Hex(dValue(i))), "0") + Hex(dValue(i))   ' 生成长度为8的十六进制字符串
                Next i
                If CDbl("&H" & Value) < 0 Then                                              ' 将十六进制的 Value 转换为十进制
                    Value = 2 ^ 32 + CDbl("&H" & Value)
                Else
                    Value = CDbl("&H" & Value)
                End If
            Case REG_BINARY
                If ValueSize > 0 Then
                    ReDim bValue(ValueSize - 1) As Byte                                     ' 存储 REG_BINARY 值的临时数组
                    RegQueryValueEx hKey, ValueName, 0, REG_BINARY, bValue(0), ValueSize
                    For i = 0 To ValueSize - 1
                        Value = Value + String(2 - Len(Hex(bValue(i))), "0") + Hex(bValue(i)) + " "  ' 将数组转换成字符串
                    Next i
                End If
        End Select
        
        ' 关闭注册表关键字...
        RegCloseKey hKey
        GetKeyValue = Trim(Value)                                                    ' 返回函数值
    End Function