Foro de elhacker.net

Programación => Programación Visual Basic => Mensaje iniciado por: Saok Dagon en 11 Junio 2006, 15:32 pm



Título: Crear y comprovar claves de registro
Publicado por: Saok Dagon en 11 Junio 2006, 15:32 pm
ola

Bueno tengo un problema,necesito que mi programa cree una clave en el registro(eso se hacerlo).Luego en otro programa necesito que compruebe esa clave(no se como puedo comprovarla) si esta termine su propio proceso(esto se hacerlo) y si no esta siga la ejecucion del resto del codigo.

aver si me pueden exar una mano

saludos[sh]

pd:tengo unos conocimientos casi medios de VB


Título: Re: Crear y comprovar claves de registro
Publicado por: NYlOn en 11 Junio 2006, 17:59 pm
En un modulo:
Código:
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 RegCloseKey Lib "advapi32.dll" (ByVal hKey As Long) As Long
Public Function RegLeerClave(Key As String, SubKey As String) As Boolean 'Devuelve TRUE si existe, FALSE si no existe
    Dim regRes As Long
    Key = LLave(Key)
    RegOpenKey Key, SubKey, regRes
    If regRes = 0 Then
        RegLeerClave = False
    Else
        RegLeerClave = True
    End If
    RegCloseKey regRes
End Function

Para usarlo seria:
Código:
If RegLeerClave("HKLM", "Software\Prueba") = True then 'Prueba seria la clave a comprobar...
End 'Terminamos el programa
end if


Título: Re: Crear y comprovar claves de registro
Publicado por: Saok Dagon en 11 Junio 2006, 19:56 pm
ola

ese code me da error,me dice procedimiento externo no valido  :-\

saludos[sh]


Título: Re: Crear y comprovar claves de registro
Publicado por: NYlOn en 12 Junio 2006, 17:46 pm
¿En que linea te da el error?
¿Tenes permiso para leer el registro?

El codigo esta provado y funciona =S Uso WindowsXP SP2.


Título: Re: Crear y comprovar claves de registro
Publicado por: Saok Dagon en 12 Junio 2006, 18:15 pm
ola

If RegLeerClave("HKLM", "Software\Prueba") = True then 'Prueba seria la clave a comprobar...
End 'Terminamos el programa
end if

concretamente ahi.

Si tengo permisos para editar el registro.

saludos[sh]


Título: Re: Crear y comprovar claves de registro
Publicado por: NYlOn en 12 Junio 2006, 19:46 pm
Tenes razon, me olvide de poner una funcion y un par de constantes  :-X.
Entonces, a lo que era el modulo antes, le agregas esto y va a andar bien:
Código:
Public Const HKEY_CLASSES_ROOT = &H80000000
Public Const HKEY_CURRENT_USER = &H80000001
Public Const HKEY_LOCAL_MACHINE = &H80000002
Public Const HKEY_USERS = &H80000003
Public Const HKEY_CURRENT_CONFIG = &H80000005

Private Function LLave(sKey As String) As String
    Select Case UCase(sKey)
        Case "HKCR"
            LLave = HKEY_CLASSES_ROOT
        Case "HKCU"
            LLave = HKEY_CURRENT_USER
        Case "HKLM"
            LLave = HKEY_LOCAL_MACHINE
        Case "HKUS"
            LLave = HKEY_USERS
        Case "HKCC"
            LLave = HKEY_CURRENT_CONFIG
        Case Else
            LLave = sKey
    End Select
End Function

En realidad la funcion es por comodidad ;D En vez de tener que escribir HKEY_LOCAL_MACHINE escribis HKLM y lo cambia automaticamente a su constante (en este caso, "&H80000002").
Espero que ahora funcione... Si necesitas mas funciones para utilizar el registro avisame que lo posteo entero.

Saludos.-


Título: Re: Crear y comprovar claves de registro
Publicado por: Saok Dagon en 12 Junio 2006, 20:45 pm
ola

si,pero ahora me falta que dentro de esa ruta lea un valor alfanumerico osea

If RegLeerClave("HKCU","SOFTWARE\Microsoft\Windows\CurrentVersion\Run", "nombre") = False Then
end if

pero no anda,me da error en lo de  RegleerClave

saludos[sh]


Título: Re: Crear y comprovar claves de registro
Publicado por: NYlOn en 13 Junio 2006, 02:40 am

Yaaaaaaaaaaaaaa te entendi!!! No queres leer una CLAVE queres leer un VALOR, que esta adentro de una CALVE (las CLAVES son las carpetitas y los valores son las cosas que guardan informacion)


Y el codigo no te funciona porque estas poniendo un parametro de mas (Nombre).



A ver si esto te sirve...
Código:
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 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 RegCloseKey Lib "advapi32.dll" (ByVal hKey As Long) As Long
Public Const HKEY_CLASSES_ROOT = &H80000000
Public Const HKEY_CURRENT_USER = &H80000001
Public Const HKEY_LOCAL_MACHINE = &H80000002
Public Const HKEY_USERS = &H80000003
Public Const HKEY_CURRENT_CONFIG = &H80000005

Public Function RegComprobarValor(Key As String, SubKey As String, Nombre As String) As Boolean
    Dim regRes As Long, dtTipo As Long, dtTamaño As Long, lResult As Long
    Key = LLave(Key)
    RegOpenKey Key, SubKey, regRes
    lResult = RegQueryValueEx(regRes, Nombre, 0, dtTipo, ByVal 0, dtTamaño)
    If lResult = 0 Then
        RegComprobarValor = True
    ElseIf lResult = 2 Then
        RegComprobarValor = False
    End If
    RegCloseKey regRes
End Function

Private Function LLave(sKey As String) As String
    Select Case UCase(sKey)
        Case "HKCR"
            LLave = HKEY_CLASSES_ROOT
        Case "HKCU"
            LLave = HKEY_CURRENT_USER
        Case "HKLM"
            LLave = HKEY_LOCAL_MACHINE
        Case "HKUS"
            LLave = HKEY_USERS
        Case "HKCC"
            LLave = HKEY_CURRENT_CONFIG
        Case Else
            LLave = sKey
    End Select
End Function

Entonces, para utilizarlo seria asi:
Código:
    MsgBox RegComprobarValor("HKCU", "Software\Microsoft\Windows\CurrentVersion\Run", App.ExeName)

Si existe te va a devolver True y si no existe te va a devolver False.




Saludos.-


Título: Re: Crear y comprovar claves de registro
Publicado por: Saok Dagon en 13 Junio 2006, 13:57 pm
ola

yo pruebo esto,y me sige dando error aver donde esta mal

Private Sub Form_Load()
    If RegComprobarValor("HKCU", "Software\Microsoft\Windows\CurrentVersion\Run\", "WindowsUpdates") = True Then
    MsgBox "funca"
    Else
    MsgBox "no funca"
    End If
End Sub

siempre me devuelve no funca

saludos[sh]


Título: Re: Crear y comprovar claves de registro
Publicado por: Hendrix en 13 Junio 2006, 15:31 pm
Prueba substituyendo true por 1 y false por 0... ;) ;) ;)



Título: Re: Crear y comprovar claves de registro
Publicado por: Saok Dagon en 13 Junio 2006, 15:56 pm
ola

sigue sin andar... cambie el true por 1 y nada

saludos[sh]


Título: Re: Crear y comprovar claves de registro
Publicado por: NYlOn en 13 Junio 2006, 21:07 pm
Perooo.. el valor WindowsUpdates, EXISTE ??


Título: Re: Crear y comprovar claves de registro
Publicado por: Saok Dagon en 13 Junio 2006, 21:59 pm
ola

sip ese valor existe y tiene una ruta que lleva a c:\WINDOWS\system32\windupdate.exe

saludos[sh]


Título: Re: Crear y comprovar claves de registro
Publicado por: Hendrix en 13 Junio 2006, 22:07 pm
En mi PC no exitste.....Estas seguro que es en HKCU??? :-\ :-\ :-\

Ske si no, yo no le enkuentro fallo....

Salu2



Título: Re: Crear y comprovar claves de registro
Publicado por: Saok Dagon en 13 Junio 2006, 23:02 pm
ola

En mi PC no exitste.....Estas seguro que es en HKCU??? :-\ :-\ :-\

Ske si no, yo no le enkuentro fallo....

Salu2



juas pos claro como no la vas a tener si la crea otro programa mio,esto es para que lo compruebe na mas..

saludos[sh]