Obtener Datos de un valor del registro

Iniciado por hAcKeR92, 10 Septiembre 2009, 20:39 PM

0 Miembros y 3 Visitantes están viendo este tema.

hAcKeR92

Hola a todos, si recurro a este foro es porque estuve buscando mucho en google y no hay manera no consigo acertar con la solucion definitiva...

necesito ir  una clave del registro y obtener los datos de un valor...

he robado con varios metosdos.. APIs, GetSetting etc y no consigo hacerlo.. si me pueden ayudar con el codigo se lo agradecere mucho!

Necesito leer datos del registro, en resumen.

si me pueden dar un ejemplo seria de gran ayuda (con cualquier valor del registro, solo por poner un ejemplo)

y tambien se lo agradezco si me enseñan a guardar datos desde vb ya que estoy utilizando shell reg add para ello!!

MCKSys Argentina

Hola!

Busca la carpeta donde está instalado VB 6 (Normalmente es en: C:\Archivos de programa\Microsoft Visual Studio\VB98).

Ahí, dentro de la carpeta: Wizards\PDWizard\Setup1, encontrarás un módulo llamado "registry.bas".

Eso es todo lo que necesitas para acceder al registro de Windows.

Saludos!
MCKSys Argentina

"Si piensas que algo está bien sólo porque todo el mundo lo cree, no estás pensando."


hAcKeR92

Cita de: MCKSys Argentina en 10 Septiembre 2009, 22:32 PM
Hola!

Busca la carpeta donde está instalado VB 6 (Normalmente es en: C:\Archivos de programa\Microsoft Visual Studio\VB98).

Ahí, dentro de la carpeta: Wizards\PDWizard\Setup1, encontrarás un módulo llamado "registry.bas".

Eso es todo lo que necesitas para acceder al registro de Windows.

Saludos!

muchas gracias! realmente a sido de gran utilidad

pero me da todo el rato errores y los ejemplos que encontre por la web tambien me los dan y por lo tanto no hallo el metodo para personalizar un ejemplo para mi programa.. me harias un favor si me pusieras un ejemplo.

seria poner en un modulo lo del registry.bas y luego en un form dando click a un boton (por ejemplo) que devolviera un msgbox con los datos del valor CTFMON.EXE situado en:

HKEY_CURRENT_USER\Software\Microsoft\Windows\CurrentVersion\Run

(pongo este de ejemplo ya que es un valor que supongo que tendreis todos)

hAcKeR92

Cita de: hAcKeR92 en 19 Septiembre 2009, 13:04 PM
Cita de: MCKSys Argentina en 10 Septiembre 2009, 22:32 PM
Hola!

Busca la carpeta donde está instalado VB 6 (Normalmente es en: C:\Archivos de programa\Microsoft Visual Studio\VB98).

Ahí, dentro de la carpeta: Wizards\PDWizard\Setup1, encontrarás un módulo llamado "registry.bas".

Eso es todo lo que necesitas para acceder al registro de Windows.

Saludos!

muchas gracias! realmente a sido de gran utilidad

pero me da todo el rato errores y los ejemplos que encontre por la web tambien me los dan y por lo tanto no hallo el metodo para personalizar un ejemplo para mi programa.. me harias un favor si me pusieras un ejemplo.

seria poner en un modulo lo del registry.bas y luego en un form dando click a un boton (por ejemplo) que devolviera un msgbox con los datos del valor CTFMON.EXE situado en:

HKEY_CURRENT_USER\Software\Microsoft\Windows\CurrentVersion\Run

(pongo este de ejemplo ya que es un valor que supongo que tendreis todos)

ME AUTOCITO:

Encontre la solucion

Hacer un nuevo proyecto y poneis en un modulo esto:

Option Explicit

Public Const HKEY_CLASSES_ROOT = &H80000000
Public Const HKEY_CURRENT_USER = &H80000001
Public Const HKEY_LOCAL_MACHINE = &H80000002
Public Const HKEY_USERS = &H80000003



Luego poneis en el form lo siguiente:

Option Explicit
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
Private Declare Function RegOpenKey Lib "advapi32.dll" Alias "RegOpenKeyA" (ByVal hKey As Long, ByVal lpSubKey As String, phkResult As Long) As Long
Private Const ERROR_SUCCESS = 0&
Private Const REG_SZ = 1
Function GetKeyValue(ByVal hKey As Long, ByVal Path As String, ByVal Value As String) As String
   Dim Result As Long
   Dim vType As Long
   Dim Buffer As String
   Dim bSize As Long
   Dim subKey As Long
   Result = RegOpenKey(hKey, Path, subKey&)
   Result = RegQueryValueEx(subKey&, Value, 0&, vType, ByVal 0&, bSize)
   If Result = ERROR_SUCCESS And vType = REG_SZ Then
       Buffer = String(bSize, Chr(0))
       Result = RegQueryValueEx(subKey&, Value, 0&, 0&, ByVal Buffer, bSize)
       If Result = ERROR_SUCCESS Then
           GetKeyValue = Left(Buffer, InStr(Buffer, Chr(0)) - 1)
       End If
   End If
   Result = RegCloseKey(subKey&)
End Function



Y debajo de todo esto en el form podeis poner por ejemplo:


Private Sub Form_Load ()
Dim Valor1
Valor1 = GetKeyValue(HKEY_LOCAL_MACHINE, "Software\Microsoft\Windows\CurrentVersion\Run", "Programa")
msgbox valor1
End Sub


Lo que va a hacer es al cargarse el form1 leer del registro en concreto de "HKLM\Software\Microsoft\Windows\CurrentVersion\Run" del valor "Programa" los datos que contenga...

Si no hay datos o no existe el valor devuelve "" y si hay datos te los da!!