Autor Tema: Registro de windows en C  (Leído 9338 veces)

Desconectado intropedro

  • Junior Member
  • **
  • Mensajes: 17
Registro de windows en C
« Respuesta #10 en: 05 de Septiembre de 2004, 07:42:10 pm »
Ok, si que parece una mejor opcion la que me as dicho, voy a ver si me pongo a programar.

Saludos

Desconectado intropedro

  • Junior Member
  • **
  • Mensajes: 17
Registro de windows en C
« Respuesta #11 en: 07 de Septiembre de 2004, 01:17:46 pm »
Hola, e estao mirando funciones que lean el valor de una clave del registro y e encontrao RegGetValue pero me pone Requirements Server: Requires Windows Server 2003 SP1, y e provado y no me la reconoce (tengo windows XP).  No se que funcion utilizar, ¿alguna recomendacion?

Saludos

Desconectado ALP

  • Member
  • ***
  • Mensajes: 234
Registro de windows en C
« Respuesta #12 en: 07 de Septiembre de 2004, 07:00:13 pm »
La función que debes utilizar para recoger un valor del registro es RegQueryValueEx()

Un saludo.
Si no puedes deslumbrar con tu sabiduría, desconcierta con tus gilipolleces.

Desconectado intropedro

  • Junior Member
  • **
  • Mensajes: 17
Registro de windows en C
« Respuesta #13 en: 10 de Septiembre de 2004, 01:11:18 am »
Hola, he estado un poco ocupado terminado un trabajo pendiente pero ya me e puesto manos a la obra.

He hechoel codigo siguiente y cuando hay un dato antes crea una clave de copia de seguridad pero el contenido de la clave no se me escribe bien, no se si cogo mal el dato, o lo escribo mal?

Código: [Seleccionar]
HKEY key;
LONG ret_key;
DWORD tam, Disposition, BufferSize;
char abrir[128];
char *salvar_clave;

/* CREAMOS LA EXTENSION */


ret_key = RegCreateKeyEx(HKEY_CLASSES_ROOT, extension, 0, "",
                         REG_OPTION_NON_VOLATILE, KEY_ALL_ACCESS,
                         NULL, &key, &Disposition);
if (ret_key == ERROR_SUCCESS) {
BufferSize = 12;//12Bytes=12caracteres
salvar_clave = NULL;
ret_key = RegQueryValueEx(key, "", NULL, NULL,(LPBYTE) salvar_clave, &BufferSize );
if(ret_key==ERROR_SUCCESS){//Hay que guardar dato
tam = lstrlen(salvar_clave);
RegSetValueEx(key, "copia_predefinido", 0, REG_SZ, (LPBYTE) salvar_clave, tam);
printf("sdsdsdsffdf\n");
}
else{printf("Mal pedro\n");}
tam = lstrlen(programa);
ret_key = RegSetValueEx(key, "", 0, REG_SZ, (LPBYTE)programa, tam);
if (ret_key != ERROR_SUCCESS) {
       /* error !!! no se ha podido asignar el valor EXTENSION*/
  return 1;
}
RegCloseKey(key);
} else {
   /* error !!! no se ha podido crear la entrada en el registro EXTENSION*/
return 2;
}


Saludos

Desconectado ALP

  • Member
  • ***
  • Mensajes: 234
Registro de windows en C
« Respuesta #14 en: 10 de Septiembre de 2004, 08:46:16 pm »
A simple vista no parece que haya nada mal, esxepto que en la función RegQueryValueEx(), presupones que el contenido de la entrada predeterminada tiene 12 bytes. Si el contenido tiene más caracteres, el valor devuelto es ERROR_MORE_DATA, y en la variable BufferSize te almacena el número de bytes que tiene la cadena en cuestión. Comprueba e imprime el valor devuelto por la función.

En el archivo winerror.h puedes encontrar las definiciones de los errores.


Un saludo.
Si no puedes deslumbrar con tu sabiduría, desconcierta con tus gilipolleces.

Desconectado intropedro

  • Junior Member
  • **
  • Mensajes: 17
Registro de windows en C
« Respuesta #15 en: 10 de Septiembre de 2004, 11:45:31 pm »
Ya lo e solucionado, probando unas cosas e intentao poner la variable salvar_clave como vector de caracteres y asi me a funcionado, tambien e quitado el salvar_clave = NULL; y e hecho que lea 128 Bytes y que el vector tenga 128 caracteres.


Saludos

 

Aviso Legal | Política de Privacidad | Política de Cookies

el contenido de la web se rige bajo licencia
Creative Commons License