Página 1 de 1

Eliminar clave del registro desde VB6

Publicado: 28 Jul 2012, 14:03
por ChristianTC
Hola,estoy intentando eliminar clave del registro en Windows 7 de la siguiente manera:

Código: Seleccionar todo

Private Sub Command1_Click()
Dim oWSH As Object
Dim clave As String
Set oWSH = CreateObject("Wscript.Shell")
clave = "HKEY_CURRENT_USER\Software\VB and VBA Program Settings\MiPrograma"
oWSH.RegDelete clave
Set oWSH = Nothing
End Sub
Pero me tira el siguiente error:

No se pudo quitar la clave del registro
"HKEY_CURRENT_USER\Software\VB and VBA Program Settings\MiPrograma".

E intentado compilarlo y ejecutarlo como administrador, e intentado buscando otros ejemplos pero siempre acabo con el mismo error.

Re: Eliminar clave del registro desde VB6

Publicado: 28 Jul 2012, 16:56
por Pink
Bueno te dejo este Ejemplo por API espero que te sirva

Código: Seleccionar todo

Const HKEY_CURRENT_USER = &H80000001
Const STANDARD_RIGHTS_ALL = &H1F0000
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 SYNCHRONIZE = &H100000
Const KEY_ALL_ACCESS = ((STANDARD_RIGHTS_ALL Or KEY_QUERY_VALUE Or KEY_SET_VALUE Or KEY_CREATE_SUB_KEY Or KEY_ENUMERATE_SUB_KEYS Or KEY_NOTIFY Or KEY_CREATE_LINK) And (Not SYNCHRONIZE))
Private Declare Function RegCloseKey Lib "advapi32.dll" (ByVal hKey As Long) As Long
Private Declare Function RegDeleteKey Lib "advapi32.dll" Alias "RegDeleteKeyA" (ByVal hKey As Long, ByVal lpSubKey As String) As Long
Private Declare Function RegOpenKeyEx Lib "advapi32.dll" Alias "RegOpenKeyExA" (ByVal hKey As Long, ByVal lpSubKey As String, ByVal Reserved As Long, ByVal samDesired As Long, phkResult As Long) As Long


Private Sub Command1_Click()
Dim Result As Long

RegOpenKeyEx HKEY_CURRENT_USER,"Software\VB and VBA Program Settings\MiPrograma", 0, KEY_ALL_ACCESS, Result
If Result = 0 Then
MsgBox ("La clave no Existe")
Else
RegDeleteKey Result, ""
RegOpenKeyEx HKEY_CURRENT_USER,"Software\VB and VBA Program Settings\MiPrograma", 0, KEY_ALL_ACCESS, Result
If Result = 0 Then
MsgBox ("la Clave Fue Borrada Correctamente")
RegCloseKey Result
End If

saludos

Re: Eliminar clave del registro desde VB6

Publicado: 28 Jul 2012, 19:46
por ChristianTC
Gracias por responder,pero no elimina la clave ni sale el mensaje de que no existe,por lo menos ahora ya no me sale ningun error XDD :S

Re: Eliminar clave del registro desde VB6

Publicado: 29 Jul 2012, 01:22
por Pink
que raro funciona bien en mi pc intenta con otra clave a ver.

Re: Eliminar clave del registro desde VB6

Publicado: 29 Jul 2012, 07:08
por AGC16
Escribelo como si estuvieras en batch

reg delete HKEY_CURRENT_USER\Software\VB and VBA Program Settings\MiPrograma /ve /f

Re: Eliminar clave del registro desde VB6

Publicado: 29 Jul 2012, 13:10
por ChristianTC
Lo e probabo con otra Clave pero nada ni errores ni mensajes de que no existe ni nada,probé otro metodo usando tambien Api antes de pedir ayuda aquí y me pasó lo mismo que no salia errores ni hacia nada :S
Tambien e desabilitado el Control de cuentas de usuario pero nada.

Tambien e probado lo de el reg delete y tampoco.

Si a ti te funciona y a mi no,entonces será una de esas cosas misteriosas que se quedan sin resover,lo unico que quería era porder guardar la configuracion de un programa y desde el mismo programa poder eliminar la configuración (Sin ningun .bat ni Archivos.reg) pero creo que va a ser que me conforme con un archivo.ini a lo pobre XD

De todas formas gracias y saludos.