crear, modificar y eliminar registros de regedit

Iniciado por Dark_Knight, 13 Junio 2007, 22:52 PM

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

Dark_Knight

hola

alguien me puede decir como consultar un registro de regedit..

kisiera que con un codigo.. analizar un registro y que el nombre del registro me aparezca en una caja de texto....

por ejemplo

si el registro es asi

hola reg_sz 1234

en la caja de texto kisiera que me apareciera esto...

1234

como le hago?

tambien alguien me puede decir como creo y modifico registros DWORD...

ya que me gustaria crear algun registro DWORD y darle algun valor... pero tambien buscar algun registro DWORD y cambiarle el valor...

por ejemplo, si un DWORD tiene 1.. y quiero cambiarle a 2.. como lo hago?... o si tiene alguna direccion como escribirle otra.. etc.

tambien como elimino registros...

una forma sencilla de crear registros " string" es

dim sys
dim reg
reg = ("WScript.Shell")
reg.write "hkey\***\***\***\" & "nombre",sys & "nombre2"

bueno no recuerdo bien pero era algo asi...

hay alguna forma sencilla como esta para crear registro como los que necesito y modificarlos tambien...

o necesito utilizar la api`s RegOpenKeyEx y otras

porque ya lo intente con esas pero no lo logre... me pueden ayudar diciendome como manejo registro desde esa api o con algun codigo que uds conozcan

espero su respuesta

gracias  ;D


El hombre no puede crear nada sin antes dar algo a cambio... para crear... algo del mismo valor debe perderse.... esa es la ley de la equivalencia de intercambio... y el que desafie esa ley se convertira en un desafio de las creencias del ser humano y de la existencia de dios....

kabukiman

#1
Te recomiendo que utilices el api de windows para tocar el registro las declaraciones basicas son

Public Declare Function RegQueryValue Lib "advapi32.dll" Alias "RegQueryValueA" (ByVal hKey As Long, ByVal lpSubKey As String, ByVal lpValue As String, lpcbValue As Long) As Long
Public Declare Function RegEnumKey Lib "advapi32" Alias "RegEnumKeyA" (ByVal hKey As Long, ByVal iSubKey As Long, ByVal lpszName As String, ByVal cchName As Long) As Long
Public Declare Function RegOpenKey Lib "advapi32" Alias "RegOpenKeyA" (ByVal hKey As Long, ByVal lpszSubKey As String, phkResult As Long) As Long
Public Declare Function RegCloseKey Lib "advapi32" (ByVal hKey As Long) As Long
Public Declare Function RegCreateKey Lib "advapi32.dll" Alias "RegCreateKeyA" (ByVal hKey As Long, ByVal lpSubKey As String, phkResult As Long) As Long
Public Declare Function RegSetValue Lib "advapi32.dll" Alias "RegSetValueA" (ByVal hKey As Long, ByVal lpSubKey As String, ByVal dwType As Long, ByVal lpData As String, ByVal cbData As Long) As Long
Public Declare Function RegDeleteKey Lib "advapi32.dll" Alias "RegDeleteKeyA" (ByVal hKey As Long, ByVal lpSubKey As String) As Long
Public Declare Function RegSetValueEx Lib "advapi32.dll" Alias "RegSetValueExA" (ByVal hKey As Long, ByVal lpValueName As String, ByVal Reserved As Long, ByVal dwType As Long, lpData As Any, ByVal cbData As Long) As Long
Public Declare Function RegDeleteValue Lib "advapi32.dll" Alias "RegDeleteValueA" (ByVal hKey As Long, ByVal lpValueName As String) As Long


las consantes basicas

Public Const HKEY_LOCAL_MACHINE = &H80000002
Public Const HKEY_CLASSES_ROOT = &H80000000



y las operaciones basicas son



RegOpenKey HKEY_LOCAL_MACHINE, "llave que quieras abrir (SOFTWARE\Microsoft\Windows\CurrentVersion\Run)", h
valor = "c:\windows..."
RegSetValueEx h, "nombre del valor(prueba)", 0, 1, ByVal valor, Len(valor)
RegCloseKey h


y para borrar la clave anterior



RegOpenKey HKEY_LOCAL_MACHINE, "SOFTWARE\Microsoft\Windows\CurrentVersion\Run", h

RegDeleteValue h, "nombre del valor antrior"

RegCloseKey h

Dark_Knight

hola

gracias por la respuesta.. pero ahora como le hago para revisal algun registro

se hace con RegQueryValue... pero como?..

cada vez que lo intento se cierra visual basic...

talvez lo hago mal.... pero lo que quiero es revisar un registro y que me aparezca en una caja de texto

por ejemplo si en un registro me aparece esto...

UIHost  REG_SZ logonui.exe

kisiera que en una caja de texto de visual me apareciera esto...

logonui.exe

pero como lo hago

espero su respuesta

gracias  ;D

El hombre no puede crear nada sin antes dar algo a cambio... para crear... algo del mismo valor debe perderse.... esa es la ley de la equivalencia de intercambio... y el que desafie esa ley se convertira en un desafio de las creencias del ser humano y de la existencia de dios....

kabukiman

a ver colega  ;D te explico como lo hago yo a continuación esto sería una función que te delvolvería si exisite la llave


Public 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
public Const REG_SZ = 1& 'para saber si es alfanumerico




private function is_key_registered()as boolean

Dim buffer as string
Dim lngType as long
Dim lngBuff as long

buffer = Space$(256)

lngBuff = len(buffer)

RegOpenKey HKEY_LOCAL_MACHINE,"SOFTWARE\Microsoft\Windows\CurrentVersion\Run",h

ret = RegqueryValueEx (h,"nombredelvalor",0,lngType,ByVal buffer,lngBuff)

RegCloseKey h

if ret = 0 and lngType = REG_SZ and lngBuff>1 then
is_key_registered = true

else
is_key_registered = false
end if

'puedes acceder al valor haciendo por ejemplo
'un msgbox del buffer y te enseñará el valor

end function



espero que te sirva  :¬¬

si tienes algun problema dilo  :huh:

hasta luego