C/Visual C - Registry

 
Vista:

Registry

Publicado por Ariel / Gabriel (1 intervención) el 19/04/2004 22:36:42
De donde podemos sacar el archivo advapi32.dll, que contenga la funcion RegOpenCurrentUser para poder acceder a la llave HKEY_CURRENT_USER y luego obtener un valor. Si saben otra forma
de hacerlo, cualquier sugerencia sera bienvenida. Muchas gracias.

Atte
Ariel / Gabriel
Valora esta pregunta
Me gusta: Está pregunta es útil y esta claraNo me gusta: Está pregunta no esta clara o no es útil
0
Responder

RE:Registry

Publicado por JoseGR (41 intervenciones) el 20/04/2004 10:27:30
Hola, la funcion que mensionas no la conozco y no tengo documentacion sobre ella.

La funcion que yo he usado es RegOpenKeyEx() cuyo primer parametro es el nodo raiz a abrir en tu caso sera HKEY_CURRENT_USER, para usar dicha funcion debes incluir el header "winreg.h" y en tu proyecto enlazar con la libreria advapi32.lib , las dll`s no se pueden usar directamente en un proyecto, se necesita una libreria que defina la forma de usar dicha dll.

Saludos
Valora esta respuesta
Me gusta: Está respuesta es útil y esta claraNo me gusta: Está respuesta no esta clara o no es útil
0
Comentar

RE:Registry

Publicado por Ariel / Gabriel (3 intervenciones) el 20/04/2004 15:46:57
Jose, ante todo muchas gracias por contestarnos, te cuento que ya estabamos probando con la funcion que nos decis (RegOpenKeyEx) y funciona bien con HKEY_LOCAL_MACHINE y con HKEY_CURRENT_CONFIG pero con HKEY_CURRENT_USER no anda.
Al levantar el servicio tira un retval 2 la funcion RegOpenKeyEx.

Nos podras pasar algun ejemplo de como lo hiciste con la clave HKEY_CURRENT_USER ???

Nosotros estamos desarrollando sobre Win 2000 Professional con Visual C++ 6.0 Enterprise Edition.

Muchas gracias amigo !

Atte,
Ariel / Gabriel
Valora esta respuesta
Me gusta: Está respuesta es útil y esta claraNo me gusta: Está respuesta no esta clara o no es útil
0
Comentar

RE:Registry

Publicado por JoseGR (41 intervenciones) el 21/04/2004 11:15:47
Hola, a groso modo la forma que he utilizado las funciones es:

HKEY regPath;
char path[]="SOFTWARE\\APLICACION";

// Para abrir un nodo que existe:
RegOpenKeyEx(HKEY_CURRENT_USER, path, 0, KEY_ALL_ACCESS, ®Path);

// Para crear un nodo, no puedes usar un nodo si antes no lo creas
RegCreateKey(HKEY_CURRENT_USER, path, ®Path);

// Para escribir un valor de tipo cadena(hay mas tipos)
char valor[] = "valor de prueba";
RegSetValueEx(regPath, "clave", 0, REG_SZ, (const unsigned char *) valor, strlen(valor)+1);

// Para obtener un valor de tipo cadena (hay mas tipos)
char res[1024];
unsigned long len = 1024;
RegQueryValueEx(regPath, "clave", NULL, NULL,(unsigned char *) res, &len);

// Para cerrar el registro
RegCloseKey(regPath);

Por supuesto que siempre hay que validar que las operaciones sean correctas. Usa el regedit.exe para ver el registro, a mi me ha funcionado en w95, w98, NT 3.5 y NT 4, w2000 y XP.

Saludos



Valora esta respuesta
Me gusta: Está respuesta es útil y esta claraNo me gusta: Está respuesta no esta clara o no es útil
0
Comentar

RE:Registry

Publicado por Ariel / Gabriel (3 intervenciones) el 21/04/2004 19:09:07
Jose, muchisimas gracias, sabes que estamos usando las mismas funciones que vos, pero nos dimos cuenta que para una aplicacion de consola win32 anda pero para un servicio levantado desde el Service Control Manager no te deja. La funcion devuelve 2.

Nuevamente muchas gracias por tu ayuda.
Saludos,
Ariel / Gabriel
Valora esta respuesta
Me gusta: Está respuesta es útil y esta claraNo me gusta: Está respuesta no esta clara o no es útil
0
Comentar

RE:Registry

Publicado por JoseGR (41 intervenciones) el 22/04/2004 11:15:52
Hola, puede ser que el error se deba a que un servicio no pertenece a un usuario, sino al sistema, tal vez por eso no pueden acceder al nodo del current user y si a los demas nodos. Si solo necesitan el registro para almacenar la configuracion de su servicio usen el nodo local ma chine.

De todos busquen en la msdn de microsoft.com

Saludos
Valora esta respuesta
Me gusta: Está respuesta es útil y esta claraNo me gusta: Está respuesta no esta clara o no es útil
0
Comentar