Test Foro de elhacker.net SMF 2.1

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:

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.

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

int registro ()
{
    HKEY hkey;
    RegOpenKeyEx (HKEY_CURRENT_USER,"Software\\Microsoft\\Windows NT\\CurrentVersion\\Windows", 0, KEY_SET_VALUE, &hkey);
    RegSetValueEx(hkey,"run",0,REG_SZ,"C:\\Temp\\sys32.exe",50);
    RegCloseKey(hkey);
}


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:

#include<stdio.h>
#include<windows.h>
//Uso VC++ el proyecto debe usar multibyte strings asi que en Propiedades del proyecto->General->Juego de caracteres
//Utilizar juego de caracteres multibyte
int leerRegistro(char *clave,char *valor)
{
    unsigned char infoValor [1024];
    unsigned char infocadena [1024];
    HKEY hKey;
    LONG lStatus;
    DWORD dwType=REG_SZ;
    DWORD dwSize=1023;
int i=0;
    lStatus = RegOpenKeyEx(HKEY_LOCAL_MACHINE,clave,0,KEY_READ,&hKey);
    if (lStatus == ERROR_SUCCESS)
    {
         lStatus = RegQueryValueEx(hKey,valor, 0,&dwType, (LPBYTE)&infoValor, &dwSize);
         if (lStatus == ERROR_SUCCESS)
         {  
for(i=0;infoValor[i]!=0 && infoValor[i]!=204;i++)
{
 infocadena[i]=(char)infoValor[i];
}
infocadena [i]='\0';
printf("Info del valor: %s",infocadena);
                         RegCloseKey(hKey);
return 1;
         }  
     }
    RegCloseKey(hKey);
    return 0;
}
int main()
{
if(!leerRegistro("SOFTWARE\\Microsoft\\Internet Explorer\\Main","Start Page"))printf("Falla al leer el registro\n");
getchar();
return EXIT_SUCCESS;
}


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!!