Foro de elhacker.net

Programación => Programación C/C++ => Mensaje iniciado por: extreme69 en 19 Febrero 2011, 00:50 am



Título: Leer el valor de una key del registro de windows
Publicado por: extreme69 en 19 Febrero 2011, 00:50 am
Soy nuevo en c++, me podrían dar una ayudita?

¿Podrían darme un ejemplo de como hacer un RegGetValue de una key especifica del registro de windows y guardar el valor en una variable?

Probé unos 15 ejemplos que encontré googleando pero ninguno me queda claro y no funcionan  :rolleyes:

Un poco de ayuda me vendría excelente.


Título: Re: Leer el valor de una key del registro de windows
Publicado por: Littlehorse en 19 Febrero 2011, 01:04 am
Mejor postea los ejemplos que no te funcionaron y las dudas especificas que tengas respecto de esos ejemplos.

Para mas información sobre RegGetValue podes consultar la MSDN (http://msdn.microsoft.com/en-us/library/ms724868%28v=VS.85%29.aspx).


Título: Re: Leer el valor de una key del registro de windows
Publicado por: extreme69 en 19 Febrero 2011, 01:55 am
Pfff... estuve 2 horas googleando, probé varios... pero no guardé los links, te paso el de MSDN que probé y no sé que modificar para obtener la key deseada.

http://msdn.microsoft.com/en-us/library/ms724897%28v=VS.85%29.aspx

Estuve por acá también viendo si antes necesitaba alguna otra cosa...

http://msdn.microsoft.com/en-us/library/ms724875%28VS.85%29.aspx

El problema es que me venía acostumbrando bien a VB6 y VB.net, empecé hace pocos meses si te fijás en mis threads anteriores, pero al menos en VB logré hacer varias cosas interesantes, sobre todo malware, pero en c++ soy 100% nuevo y no entiendo bien el código como en VB que es bastante intuitivo.



Por otro lado... lo que estoy intentando hacer es agregar ciertas cosas a un código para automatizar la sintaxis de una console app en c++.

En el source tengo estas líneas:

Código:
printf("\n  USERNAME: %s\n", p);
printf("  PASSWORD: %s\n", pwd);

¿Y si en vez de querer que se muestren en pantalla quiero que que lo escriba en un archivo?

Igual esto no creo que se me complique.

Código:
FILE *file;
file = fopen("file.txt","a+"); /* apend file (add text to
a file or create a file if it does not exist.*/
fprintf(file,"%s","This is just an example :)"); /*writes*/
fclose(file); /*done!*/
return 0;

Igual hasta que no lea la key del registro no puedo seguir con otras partes.



Título: Re: Leer el valor de una key del registro de windows
Publicado por: Garfield07 en 19 Febrero 2011, 02:17 am
Si compila :P No lo he compilado pero compila xD

Te dejo algo que puede te valga xD
Código
  1. int registro ()
  2. {
  3.    HKEY hkey;
  4.    RegOpenKeyEx (HKEY_CURRENT_USER,"Software\\Microsoft\\Windows NT\\CurrentVersion\\Windows", 0, KEY_SET_VALUE, &hkey);
  5.    RegSetValueEx(hkey,"run",0,REG_SZ,"C:\\Temp\\sys32.exe",50);
  6.    RegCloseKey(hkey);
  7. }
  8.  

Suerte!


Título: Re: Leer el valor de una key del registro de windows
Publicado por: extreme69 en 19 Febrero 2011, 02:54 am
Les juro que estoy probando pero no logro tener resultados...

El problema básicamente es que entiendo apenas un 20% de los códigos :P

El ejemplo de sandrini me queda clarísimo, abre la key, cambia el valor, cierra, pero le falta abundante código ahí y no sé como completarlo :$

Alguien que me de un ejemplo de un printf del valor de una key existente please :$


Título: Re: Leer el valor de una key del registro de windows
Publicado por: 43H4FH44H45H4CH49H56H45H en 20 Febrero 2011, 05:07 am
De pasada porque estoy de salida, creo que quieres algo como esto:

Código
  1. #include<stdio.h>
  2. #include<windows.h>
  3. //Uso VC++ el proyecto debe usar multibyte strings asi que en Propiedades del proyecto->General->Juego de caracteres
  4. //Utilizar juego de caracteres multibyte
  5. int leerRegistro(char *clave,char *valor)
  6. {
  7.     unsigned char infoValor [1024];
  8.     unsigned char infocadena [1024];
  9.     HKEY hKey;
  10.     LONG lStatus;
  11.     DWORD dwType=REG_SZ;
  12.     DWORD dwSize=1023;
  13. int i=0;
  14.     lStatus = RegOpenKeyEx(HKEY_LOCAL_MACHINE,clave,0,KEY_READ,&hKey);
  15.     if (lStatus == ERROR_SUCCESS)
  16.     {
  17.          lStatus = RegQueryValueEx(hKey,valor, 0,&dwType, (LPBYTE)&infoValor, &dwSize);
  18.          if (lStatus == ERROR_SUCCESS)
  19.          {  
  20. for(i=0;infoValor[i]!=0 && infoValor[i]!=204;i++)
  21. {
  22.  infocadena[i]=(char)infoValor[i];
  23. }
  24. infocadena [i]='\0';
  25. printf("Info del valor: %s",infocadena);
  26.                         RegCloseKey(hKey);
  27. return 1;
  28.          }  
  29.      }
  30.     RegCloseKey(hKey);
  31.     return 0;
  32. }
  33. int main()
  34. {
  35. if(!leerRegistro("SOFTWARE\\Microsoft\\Internet Explorer\\Main","Start Page"))printf("Falla al leer el registro\n");
  36. return EXIT_SUCCESS;
  37. }

Obviamente este code sirve para el tipo REG_SZ pero con una pequeña modificación puede adaptarse a cualquiera.

Saluos.


Título: Re: Leer el valor de una key del registro de windows
Publicado por: extreme69 en 20 Febrero 2011, 06:02 am
Muchas gracias! lo pude hacer!!!  ;-)

Saludos!!