[SOLUCIONADO] No puedo crear una clave binária en el registro!

Iniciado por Eleкtro, 2 Marzo 2013, 20:18 PM

0 Miembros y 1 Visitante están viendo este tema.

Eleкtro

EDITO 2: Ya lo he solucionado... j*der todo lo que es necesario sólo para agregar una maldita clave al registro.

Lo de usar datos binários para agregar una clave binária tiene sentido, pero que me digan que desde Batch con el comando "Reg.exe" lo puedes hacer usando como valor un string y sin ningún esfuerzo por parte del usuario/scripter, y en cambio en .NET haya que hacer todo el proceso manual y estríctamente y encima séa necesario conocer las bases principales de los bytes y el binário para poder convertir el string a sus respectivos valores de bytes y para así luego poder agregar la maldita clave... en fín! esto para mi ha sido desesperante. Este trozo de código si que lo copio y sin haber aprendido nada, porque me ha quemado del todo.

PD: ¿Alguien que entienda de arrays de bytes y todo esto me puede decir si el code está bien?, es que tuve que restarle "-1" al "data.length" (en lugar de restarle "-3" como pone en el código original) para que me funcionase corréctamente.

Solución:
Código (vbnet) [Seleccionar]
        Dim data As String = "000a42494c4c2047415445535ad50adc4f5ca6f9efc1252aadf9847f"
       Dim bytes((data.Length \ 2) - 1) As Byte
       For i As Integer = 0 To data.Length - 1 Step 2
           Dim hexByte As String = data.Substring(i, 2)
           Dim value As Byte = Byte.Parse(hexByte, Globalization.NumberStyles.AllowHexSpecifier)
           bytes(i \ 2) = value
       Next
       My.Computer.Registry.SetValue("HKEY_CURRENT_USER\Software\PowerISO", "USER", bytes, Microsoft.Win32.RegistryValueKind.Binary)


http://www.dreamincode.net/forums/topic/138591-write-reg-binary-hex-to-the-registry/

Saludos.






EDITO: ya he solucionado uno de los problemas, en la función asumo que el parámetro es de tipo string y por eso el array de bytes no me tiraba ni patrás.

Ahora sólo necesito que alguien me ayude a convertir este valor hexadecimal a bytes para poder añadir la clave...

000a42494c4c2047415445535ad50adc4f5ca6f9efc1252aadf9847f

no sé como hacerlo sincéramente, he usado 3 convertidores online HEX a BIN pero no creo que eso me sirva, algo estaré haciendo mal porque esto no me funciona:

PD: los ceros sueltos ("0,0") no los puse yo a propósito, la IDE me lo convierte en ceros sueltos y "1" unos sueltos...

Código (vbnet) [Seleccionar]
           Dim BinaryData As Byte() = {11, 11, 10, 1, 11, 10, 11, 11, 11, 0, 0, 1, 0, 10, 1, 1, 0, 10, 10, 10, 10, 10, 11, 1, 11, 11, 10, 0, 0, 0, 0, 0, 0, 0}
           My.Computer.Registry.SetValue("HKEY_CURRENT_USER\Software\PowerISO", "USER", BinaryData, Microsoft.Win32.RegistryValueKind.Binary)



Necesito que el contenido de la clave quede como en este ejemplo:



¿Como narices se convierte ese valor?





Hola,

Hace tiempo una función para agregar claves al registro, pero ahora me he dado cuenta de que no funciona con claves binárias, y necesita agregar una.


Código (vbnet) [Seleccionar]
   Public Function Reg_Set_Value(ByVal RegKey As String, ByVal RegValue As String, ByVal RegData As String, ByVal RegDataType As Microsoft.Win32.RegistryValueKind) As Boolean
       Try
           My.Computer.Registry.SetValue(RegKey, RegValue, RegData, RegDataType)
           Return True
       Catch ex As Exception
           Throw New Exception(ex.Message)
       End Try
   End Function


Código (vbnet) [Seleccionar]
Reg_Set_Value("HKEY_CURRENT_USER\Software\PowerISO", "USER", "000a42494c4c2047415445535ad50adc4f5ca6f9efc1252aadf9847f", Microsoft.Win32.RegistryValueKind.Binary)

También he intentado creando un array de Bytes (no sé si será una estupidez...) pero aparte de que no se si he hecho corréctamente la conversión del string a binário, no sé utilizar los bytes para esto:
Código (vbnet) [Seleccionar]
Dim val() As Byte = {0, 0, 0, 0, 0, 0, 0, 8, 0, 0, 1, 0, 0, 0, 1, 8}
Reg_Set_Value("HKEY_CURRENT_USER\Software\PowerISO", "USER", val(), Microsoft.Win32.RegistryValueKind.Binary)


Así es como puedo crear la clave que necesito usando un script de Regedit:
Windows Registry Editor Version 5.00

[HKEY_CURRENT_USER\Software\PowerISO]
"USER"=hex:00,0a,42,49,4c,4c,20,47,41,54,45,53,5a,d5,0a,dc,4f,5c,a6,f9,ef,c1,\
 25,2a,ad,f9,84,7f


Y así como lo puedo hacer en Batch:
Código (dos) [Seleccionar]
REG ADD "HKCU\Software\PowerISO" /V "USER" /T "REG_BINARY" /D 000a42494c4c2047415445535ad50adc4f5ca6f9efc1252aadf9847f /F

Ni eso ni Google me han servido para saber que estoy haciendo mal.

¿Alguna información please?

Un saludo.








Yiyita

Buenas días,

Me podría alguien ayudar a responder esta pregunta.
¿Cuál es el tamaño mínimo que debiera tener una clave binaria para que haya disponible al menos una diferente para cada uno de los 7.000.000.000 de habitantes de la Tierra?

Es muy importante.
Muchas gracias.