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
Ir a la versión completa