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.
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).
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.
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!
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 :$
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.
Muchas gracias! lo pude hacer!!! ;-)
Saludos!!