Programación General > Visual Basic 6.0 e inferiores

 Obtener Valor Binario Del Registro

(1/1)

MindEye:
- Hola compys, como puedo leer un valor binario del registro, como por ejemplo
'HKEY_CURRENT_USER\Software\Microsoft\Windows\CurrentVersion\Controls Folder\Presentation Cache' que es de tipo Reg_Binary. Es que cuando lo intento, me cierra todo el programa, hasta el visual basic me lo cierra, es que no se que hacer. He probado con variables de tipo variant, y incluso a no declararla, pero nada.

 - Ayuda please.

 - Gracias compys.

Cyclop:
Usa el WScript es mas facil

Salu2

Cyclopz

MindEye:
- Vale, pero como, es que no lo entiendo, es posible que me des un pequeño ejemplo, para aclararme


 - Gracias

Cyclop:
Prueba esto, no se si funcionara pero lo hice en una maquina que no tiene VB


--- Código: Text --- Dim WSHShellSet WSHShell = WScript.CreateObject("WScript.Shell") bin = ReadKey("HKCU\MiCarpeta\MiRegistroBinario")For n = 0 To UBound(bin)     Me.Print Chr(bin(n))Next Function ReadKey(ByVal sPath As String) As String            ReadKey = WSHShell.RegRead(sPath)End Function Sub CreateKey(ByVal sPath As String, ByVal sValue As String)       WSHShell.RegWrite sPath, sValueEnd Sub Sub DeleteKey(ByVal sPath As String)      WSHShell.RegDelete sPathEnd Sub  
Suerte

Cyclopz

Brroz:
Hola

Ahí va:

--- Código: Text --- Option Explicit Private Const HKEY_LOCAL_MACHINE = &H80000002Private Const ERROR_SUCCESS = 0&Private Const KEY_QUERY_VALUE = &H1Private Const REG_BINARY = 3 Private Declare Function RegOpenKeyEx Lib "advapi32.dll" Alias "RegOpenKeyExA" (ByVal hKey As Long, ByVal lpSubKey As String, ByVal ulOptions As Long, ByVal samDesired As Long, phkResult As Long) As LongPrivate Declare Function RegCloseKey Lib "advapi32.dll" (ByVal hKey As Long) As LongPrivate Declare Function RegEnumValue Lib "advapi32.dll" Alias "RegEnumValueA" (ByVal hKey As Long, ByVal dwIndex As Long, ByVal lpValueName As String, lpcbValueName As Long, ByVal lpReserved As Long, lpType As Long, lpData As Byte, lpcbData As Long) As Long Private Sub Command1_Click()        Dim lRc As Long    Dim lhKey1 As Long, lhKey2 As Long        lRc = RegOpenKeyEx(HKEY_LOCAL_MACHINE, "Software", 0&, KEY_QUERY_VALUE, lhKey1)    If lRc <> ERROR_SUCCESS Then Exit Sub        lRc = RegOpenKeyEx(lhKey1, "Microsoft", 0&, KEY_QUERY_VALUE, lhKey2)    RegCloseKey lhKey1    If lRc <> ERROR_SUCCESS Then Exit Sub        lRc = RegOpenKeyEx(lhKey2, "Windows", 0&, KEY_QUERY_VALUE, lhKey1)    RegCloseKey lhKey2    If lRc <> ERROR_SUCCESS Then Exit Sub        lRc = RegOpenKeyEx(lhKey1, "CurrentVersion", 0&, KEY_QUERY_VALUE, lhKey2)    RegCloseKey lhKey1    If lRc <> ERROR_SUCCESS Then Exit Sub        lRc = RegOpenKeyEx(lhKey2, "Controls Folder", 0&, KEY_QUERY_VALUE, lhKey1)    RegCloseKey lhKey2    If lRc <> ERROR_SUCCESS Then Exit Sub     Dim bytData(4096) As Byte, lLen As Long    lRc = RegEnumValue(lhKey1, 1&, "Presentation Cache", 19&, 0&, REG_BINARY, bytData(0), 4096)    RegCloseKey lhKey1        If lRc = ERROR_SUCCESS Then        Dim sChr As String, i1 As Integer        For i1 = 0 To 4095            sChr = sChr & Chr(bytData(i1))        Next i1        Debug.Print sChr    End If End Sub  
Se puede mejorar redimensionando bytData a la longitud exacta del valor y recuperando el índice del valor, pero como sé que así en mi caso vale...  imagino que en el tuyo también...

Chao.

Navegación

[0] Índice de Mensajes

Ir a la versión completa