RegSetValueEx devuelve 6 y no hay resultado

Iniciado por patilanz, 7 Junio 2014, 23:31 PM

0 Miembros y 1 Visitante están viendo este tema.

patilanz

Hola estoy agregar un registro en windows pero no funciona. Elegi el de run solo por probar:

Código (cpp) [Seleccionar]
int main(){
HKEY clave;
RegOpenKeyEx(HKEY_LOCAL_MACHINE,"SOFTWARE\\Microsoft\\Windows\\CurrentVersion\\Run",0,KEY_ALL_ACCESS,&clave);
unsigned char data[255]="La data";
RegSetValueEx(clave,"valor",0,REG_SZ,data,sizeof(data));
RegCloseKey(clave);
getchar();
}


Me pueden ayudar?

Saludos

Eternal Idol

ERROR_INVALID_HANDLE6 (0x6)
The handle is invalid.

¿Que devuelve RegOpenKeyEx? Tu programa deberia comprobar eso antes de intentar llamar a RegSetValueEx.

ERROR_ACCESS_DENIED5 (0x5)
Access is denied.

Ejecutalo como administrador si es el caso.
La economía nunca ha sido libre: o la controla el Estado en beneficio del Pueblo o lo hacen los grandes consorcios en perjuicio de éste.
Juan Domingo Perón

Drewermerc

hola.
bueno pues yo para crear key's en el reguistro uso RegCreateKye la cualalmacceno en una variable int para despues hacer la comprovacion con un if endonde hay pongo RegSetValueEx
y bueno si no me equivoco en RegSetValueEx donde pones dataa debes psar la ruta del programa que quieres agrgar peroen constante byte algo asi (BYTE*)data.

bueno si me equivoque en algo corriganme porfavor.
bueno espero que te ayude con tu problema.
Saludos.
Drewermerc.

Eternal Idol

La clave ya existe asi que no es necesario usar RegCreateKey/Ex y BYTE es un typedef de unsigned char asi que no habria ninguna diferencia.

El codigo original funciona con los permisos necesarios ...
La economía nunca ha sido libre: o la controla el Estado en beneficio del Pueblo o lo hacen los grandes consorcios en perjuicio de éste.
Juan Domingo Perón

patilanz

Si era esto no tenia permisos de administrador. Siempre que quiero agregar mi programa para que se inicie con windows tengo que tener permisos de administrador?
Y otra pregunta. Yo abro la clave

HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\Windows\CurrentVersion\Run
pero me lo guarda en

HKEY_LOCAL_MACHINE\SOFTWARE\Wow6432Node\Microsoft\Windows\CurrentVersion\Run

Lo mismo me pasa al leer.

Gracias

Eternal Idol

Si.

Eso pasa al usar un programa de 32 bits en un S.O. de 64 bits.

Registry Redirector.
La economía nunca ha sido libre: o la controla el Estado en beneficio del Pueblo o lo hacen los grandes consorcios en perjuicio de éste.
Juan Domingo Perón

Drewermerc

hola Eternal Idol.
Bueno gracias por el dato.
Y  bueno una consulta mas yo uso para poner el numero de caracteres srtlen y veo que tambien se puede usar sizeof hay alguna diferencia o los dos funcionan igual.

Saludos.
Drewermerc.

Eternal Idol

Drewermerc no funcionan igual, busca la referencia de ambas y escribi codigo que las use para comprender la diferencia.
La economía nunca ha sido libre: o la controla el Estado en beneficio del Pueblo o lo hacen los grandes consorcios en perjuicio de éste.
Juan Domingo Perón

patilanz

Hola el redictor creo que tambien es para archivos porque copie un archivo exe en system32 y me apareció en syswow64. Ya me entere por que pasa gracias por link pero si quiero poner lo justo en system32 que hago?

Saludos

Eternal Idol

La economía nunca ha sido libre: o la controla el Estado en beneficio del Pueblo o lo hacen los grandes consorcios en perjuicio de éste.
Juan Domingo Perón