以上API函数在模块里都声明了的。

解决方案 »

  1.   

    且执行到 RegOpenKeyEx时已成功返回一个Long的.
      

  2.   

    Private Declare Function RegCloseKey Lib "advapi32.dll" (ByVal hKey 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 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
    Const READ_CONTROL = &H20000
    Const KEY_QUERY_VALUE = &H1
    Const KEY_SET_VALUE = &H2
    Const KEY_CREATE_SUB_KEY = &H4
    Const KEY_ENUMERATE_SUB_KEYS = &H8
    Const KEY_NOTIFY = &H10
    Const KEY_CREATE_LINK = &H20
    Const KEYACCESS = KEY_QUERY_VALUE + KEY_SET_VALUE + _
                          KEY_CREATE_SUB_KEY + KEY_ENUMERATE_SUB_KEYS + _
                          KEY_NOTIFY + KEY_CREATE_LINK + READ_CONTROL
    Const ER = 3Private Sub Command1_Click()
    Dim rc
    Dim KeyRoot
    Dim KeyName
    Dim hKey As Long
    Dim myvalue As String, subkey As String
    Dim mysize As Long
    Dim KeyValType As Long                              ' 注册键的数据类型KeyRoot = &H80000002
    KeyName = "SYSTEM\Controlset001\control\biosinfo" ' "system\currentcontrolset\services\vxd\mstcp"
    hKey = 0
    subkey = "InfName"rc = RegOpenKeyEx(KeyRoot, KeyName, 0, KEYACCESS, hKey)myvalue = String$(1000, 0)
    mysize = 1000
    KeyValType = 7
    rc = RegQueryValueEx(hKey, subkey, 0, KeyValType, myvalue, mysize) ' 获得/创建键值
    '运行到上一行时系统说 该内存不能为"Read","确定"就退出了。
    Text1.Text = myvalue
    RegCloseKey (hKey)
    End Sub98+VB6下没问题
      

  3.   

    Amoon(阿木):你能贴个简单的例子在上面吗?谢谢
    dbcontrols(泰山__帮助你使我感到快乐.):我在98机器上试过了,还是非法操作。
      

  4.   

    mjs2000(宁静致远):可我用了两台机器试过了呀。我运行Regedit后,随便找了存在的键后,替换上面程序里相应的地方,可老是运行到 RequeryValueEx时非法操作!!!
    各位快快帮帮我吧!
      

  5.   

    Amoon(阿木):我的email: [email protected], 刚也给你发了个mail,谢谢