是不是VB做的dll文件不能访问注册表啊,键值为字符串,我用getsetting和API两种方式测试过,在窗体下用同样的代码访问注册表没什么问题,拷贝到dll中就不行了,请大家给个答复,VB行还是不行,如果行该用什么方法,谢谢

解决方案 »

  1.   

    朋友,我也遇到过和你一样的问题,不过我是再把ASP封装成DLL时不能访问注册表的,但在VB里DLL是可以直接能调用注册表的,我想可能用ASP调用DLL就不能行了,不知道这里的大虾们能不能解决这个问题,所以我也只能关注了。
      

  2.   

    我的这个就是从DLL中提出来的Public Function SetValue(RootKey As Long, SubKey As String, Name As String, fbType As Integer, Value As Variant) As Long
    '设置值
    On Error GoTo er
    Dim i As Integer, tmp As String
    l = RegOpenKeyEx(RootKey, SubKey, 0, &H3F, r)
    If l <> 0 Then GoTo er
    Select Case fbType
    Case REG_DWORD
        SetValue = RegSetValueEx(r, Name, 0&, 4, CLng(Value), 4)
    Case REG_SZ
        SetValue = RegSetValueEx(r, Name, 0&, 1, ByVal CStr(Value), Len(CStr(Value)))
    Case REG_BINARY
        SetValue = RegSetValueEx(r, Name, 0&, 3, ByVal CStr(Value), Len(CStr(Value)))
    Case Else
        SetValue = -1
    End Select
    RegCloseKey r
    Exit Function
    er:
    SetValue = -1
    RegCloseKey r
    End FunctionPublic Function GetValue(RootKey As Long, SubKey As String, Name As String, fbType As Integer) As Variant
    '读取值
    Dim s As Long, sValue As String, tmp As String, i As Integer, bin() As Byte
    On Error GoTo er
    tmp = String(1024, 0)
    s = 1024
    l = RegOpenKeyEx(RootKey, SubKey, 0, &H3F, r)
    If l <> 0 Then GoTo er
    Select Case fbType
    Case REG_DWORD
        RegQueryValueEx r, Name, 0, 1, ByVal tmp, s
        tmp = Left(tmp, InStr(tmp, Chr(0)) - 1)
        for i = Len(tmp) To 1 Step -1
            sValue = sValue & Hex(Asc(Mid(tmp, i, 1)))
        Next i
        GetValue = Format("&H" & sValue)
    Case REG_SZ
        RegQueryValueEx r, Name, 0, 1, ByVal tmp, s
        tmp = Left(tmp, InStr(tmp, Chr(0)) - 1)
        GetValue = tmp
    Case REG_BINARY
        RegQueryValueEx r, Name, 0, 3, ByVal vbNullString, s
        sValue = String(s, 0)
        RegQueryValueEx r, Name, 0, 3, ByVal sValue, s
        GetValue = sValue
    Case Else
        GetValue = ""
    End Select
    RegCloseKey r
    Exit Function
    er:
    GetValue = -1
    RegCloseKey r
    End Function
      

  3.   

    faib920(飞步) 我的实现方式跟你的大同小异,估计问题不是在API使用上,subzero(赘姆烂壳) 的提法到是有些意思,能不能再说得详细一点