Foros del Web » Programación para mayores de 30 ;) » Programación General » Visual Basic clásico »

Escribir en el registro valores DWORD.

Estas en el tema de Escribir en el registro valores DWORD. en el foro de Visual Basic clásico en Foros del Web. Quisiera saber como hago para escribir en el registro valores del tipo DWORD. Puedo escribir valores de cadena REG_SZ, pero cuando uso la constante de ...
  #1 (permalink)  
Antiguo 23/05/2005, 14:48
Avatar de relasoft  
Fecha de Ingreso: mayo-2005
Ubicación: Santa Fe, Argentina
Mensajes: 660
Antigüedad: 19 años
Puntos: 3
Escribir en el registro valores DWORD.

Quisiera saber como hago para escribir en el registro valores del tipo DWORD.
Puedo escribir valores de cadena REG_SZ, pero cuando uso la constante de DWORD y escribo el valor me dice valor de dword incorrecto en el registro.

Quisiera saber como hago para escribir este tipo de valores (hexadecimales) y con que funcion de la api podria hacerlo .

Desde ya muchas gracias.
  #2 (permalink)  
Antiguo 23/05/2005, 15:52
 
Fecha de Ingreso: abril-2005
Mensajes: 3.083
Antigüedad: 19 años
Puntos: 17
En la MSDN, en la función RegSetValue leemos:

dwType
[in] Type of information to be stored. This parameter must be the REG_SZ type. To store other data types, use the RegSetValueEx function.

Por lo tanto, deberás usar RegSetValueEx para tu propósito.

http://msdn.microsoft.com/library/de...setvalueex.asp

Última edición por MaxExtreme; 23/05/2005 a las 15:58
  #3 (permalink)  
Antiguo 23/05/2005, 15:53
Avatar de David
Moderador
 
Fecha de Ingreso: abril-2005
Ubicación: In this planet
Mensajes: 15.720
Antigüedad: 19 años
Puntos: 839
Valores Binarios

Te evitaré menos complicaciones y te daré una forma de agregar valores binarios al registro. Sin API'S, etc. . Solo código
Open "C:\TempReg.reg" For Output As #1
Print #1, "Windows Registry Editor Version 5.00"
Print #1, ""
Print #1, "[Aquí va la clave con corchetes]"
Print #1, "[Aquí va el nombre del valor binario entre comillas sin corchetes]" & "=hex:00,00,00,00"
Call Shell("regedit.exe /s C\:TempReg.reg")

Explicación
Este código sirve para XP, para los demás cambia "5.00" por la versión de Regedit.
La razón por la que te doy este código y no una API, es que ya probé muchas otras cosas y ninguna resultó tan eficaz.

OK
Cualquier duda en cuanto a esto, escríbenos.
__________________
Por favor, antes de preguntar, revisa la Guía para realizar preguntas.
  #4 (permalink)  
Antiguo 23/05/2005, 15:54
 
Fecha de Ingreso: abril-2005
Mensajes: 3.083
Antigüedad: 19 años
Puntos: 17
Cita:
Iniciado por David el Grande
Te evitaré menos complicaciones y te daré una forma de agregar valores binarios al registro. Sin API'S, etc. . Solo código
Open "C:\TempReg.reg" For Output As #1
Print #1, "Windows Registry Editor Version 5.00"
Print #1, ""
Print #1, "[Aquí va la clave con corchetes]"
Print #1, "[Aquí va el nombre del valor binario entre comillas sin corchetes]" & "=hex:00,00,00,00"
Call Shell("regedit.exe /s C\:TempReg.reg")

Explicación
Este código sirve para XP, para los demás cambia "5.00" por la versión de Regedit.
La razón por la que te doy este código y no una API, es que ya probé muchas otras cosas y ninguna resultó tan eficaz.

OK
Cualquier duda en cuanto a esto, escríbenos.
1 - Eso es una chapuza, ya postee la solución correcta. Por cierto, las API's no tienen mayor complicación que tu solución, además son estándar y no eso...

2 - No ha pedido valores binarios, sino DWORD.

3 - Precisamente, sólo vale para XP. Las API's sirven para cualquier versión porque no dependen de un programa (RegEdit)

4 - Si no te resultó ninguna otra eficaz, ¿crees que quienes inventaron la API no sabían lo que hacían? ¿No será que no la sabes usar...?
  #5 (permalink)  
Antiguo 23/05/2005, 15:58
Avatar de David
Moderador
 
Fecha de Ingreso: abril-2005
Ubicación: In this planet
Mensajes: 15.720
Antigüedad: 19 años
Puntos: 839
Lo siento

Siento, entendí mal "hexadecimal", lo que en el registro significa binario.

Ahora, con las API'S solo se puede agregar valores de par en par. Por ejemplo:ff 00 ff 00
¿Cómo cambiarás los ceros?
El código que yo le di le da la posibilidad de hacerlo.

__________________
Por favor, antes de preguntar, revisa la Guía para realizar preguntas.
Atención: Estás leyendo un tema que no tiene actividad desde hace más de 6 MESES, te recomendamos abrir un Nuevo tema en lugar de responder al actual.
Respuesta




La zona horaria es GMT -6. Ahora son las 06:08.