
13/01/2004, 08:58
|
| | Fecha de Ingreso: agosto-2003
Mensajes: 174
Antigüedad: 21 años, 8 meses Puntos: 3 | |
Borrar clave del registro en vb Hola
¿Por qué esto me da error 'la convención de llamadas a dll es incorrecta?
Código:
Command1_click()
Resultado% = RegBorrarClave("MACHINE", "SAM\Miclave", 32)
end sub
En un módulo
Código:
Global Const HKEY_CLASSES_ROOT = &H80000000
Global Const HKEY_CURRENT_USER = &H80000001
Global Const HKEY_LOCAL_MACHINE = &H80000002
Global Const HKEY_USERS = &H80000003
Global Const HKEY_CURRENT_CONFIG = &H80000005
Global Const HKEY_DYN_DATA = &H80000006
Global Const HKEY_PERFORMANCE_DATA = &H80000004
Global Const KEY_WOW64_64KEY As Long = &O100 '// 64-bit Key
Global Const KEY_WOW64_32KEY As Long = &O200 '// 32-bit Key
Declare Function RegDeleteKeyEx Lib "advapi32.dll" Alias _
"RegDeleteKeyA" (ByVal hKey As Long, ByVal lpSubKey As String, _
ByVal samDesired As Long, ByVal Reserved As Long) As Long
Código:
Function RegBorrarClave(ClaveStr As String, SubClave As String, Tipo As String)
Dim Resultado As long, Handle As String, Clave As Long
Clave = ObtenerClave(ClaveStr)
If Tipo = 32 Then
Resultado = RegDeleteKeyEx(Clave, SubClave, KEY_WOW64_32KEY, 0) /* ERROR *
ElseIf Tipo = 64 Then
Resultado = RegDeleteKeyEx(Clave, SubClave, KEY_WOW64_64KEY, 0)
Else
Resultado = -1
End If
RegBorrarClave = Resultado
End Function
Código:
Function ObtenerClave(str As String)
Select Case str
Case "MACHINE"
Clave = HKEY_LOCAL_MACHINE
Case "ROOT"
Clave = HKEY_LOCAL_ROOT
Case "USER"
Clave = HKEY_CURRENT_USER
Case "CONFIG"
Clave = HKEY_CURRENT_CONFIG
Case "USERS"
Clave = HKEY_USERS
Case "DATA"
Clave = HKEY_PERFOMANCE_DATA
Case "TEXT"
Clave = HKEY_PERFOMANCE_TEXT
Case "NSLTEXT"
Clave = HKEY_PERFOMANCE_NLSTEXT
Case Else
Clave = -1
End Select
ObtenerClave = Clave
End Function
He comprobado en el depurador que llega a la línea que he marcado con /* ERROR * con los valores:
Clave = HKEY_LOCAL_MACHINE
SubClave = "SAM\MiClave"
que son correctos
Última edición por Gedeon; 13/01/2004 a las 09:10 |