调用RegCreateKey(HKEY_LOCAL_MACHINE, sRegistryKey,   lKeyId)
时返回值是161。

解决方案 »

  1.   

    这样呢。
    dim hKey as long
    dim RetVal as longRegCreateKeyEx(HKEY_LOCAL_MACHINE,sRegistryKey,0,vbnullstring,REG_OPTION_NON_VOLATILE,KEY_ALL_ACCESS,0,hKey,RetVal)
      

  2.   

    1.Reference WSH
    Set WshShell = CreateObject("WScript.Shell")
    msgbox WshShell.RegRead("HKCU\ScriptEngine\Val")   ' Read from value "Val".
    msgbox WshShell.RegRead("HKCU\ScriptEngine\Key\") ' Read from key "Key".2.使用API
    Private Declare Function RegCloseKey Lib "advapi32.dll" (ByVal hKey As Long) As Long
    Private Declare Function RegOpenKey Lib "advapi32.dll" Alias "RegOpenKeyA" (ByVal hKey As Long, ByVal lpSubKey As String, phkResult As Long) As Long
    Private Declare Function RegEnumKeyEx Lib "advapi32.dll" Alias "RegEnumKeyExA" (ByVal hKey As Long, ByVal dwIndex As Long, ByVal lpName As String, lpcbName As Long, ByVal lpReserved As Long, ByVal lpClass As String, lpcbClass As Long, lpftLastWriteTime As Any) As Long
    Private Declare Function RegEnumValue Lib "advapi32.dll" Alias "RegEnumValueA" (ByVal hKey As Long, ByVal dwIndex As Long, ByVal lpValueName As String, lpcbValueName As Long, ByVal lpReserved As Long, lpType As Long, lpData As Byte, lpcbData As Long) As Long
      

  3.   

    98下能用的api写的读写注册表程序的确在2000下有些问题,需要作些修改,
    最简单的办法是用wscript.shell对象,这样做不需要管是在98还是2000
    读注册表:
    Set WshShell = Wscript.CreateObject("Wscript.Shell")WshShell.RegRead("HKCU\ScriptEngine\Val")    ' Read from value "Val"
    WshShell.RegRead("HKCU\ScriptEngine\Key\")   ' Read from key "Key"
    其他用法在msdn上有详细说明
      

  4.   

    我在Windows sever 2000中用API函数读写注册表没有问题。你是怎么用的?