RegOpenKeyEx HKEY_LOCAL_MACHINE acceso denegado 5 (Solucionado)

Iniciado por patilanz, 14 Diciembre 2014, 17:02 PM

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

patilanz

Hola tengo una aplicación que tiene que iniciar se con windows. Funciona perfectamente en windows 8.1 que es el ordenador donde la compilo de forma estática con visual studio 2013. Pero luego si la paso por usb a otros dos portátiles también con windows 8.1 64 bits recibo el error 5 al intentar:

Código (cpp) [Seleccionar]
HKEY key;
int error = RegOpenKeyEx(HKEY_LOCAL_MACHINE, "SOFTWARE\\Microsoft\\Windows\\CurrentVersion\\Run", 0, KEY_SET_VALUE, &key);
if (error== ERROR_SUCCESS){
char msg[80];
sprintf_s(msg, "RegOpenKey: %u", error);
MessageBox(0, msg, "Error", MB_ICONERROR);
return 0;
}

En el ordenador de compilar tengo avg 2014 activado y no tengo problemas. En el primer portátil tengo windows defender desactivado y en el segundo activado pero esto no afecta. Por lo tanto no creo que es por el antivirus. La aplicación la ejecuto con permisos de asInvoker (/level='asInvoker') los defaults.

Si lo abro como administrador funciona.

Como lo soluciono ?

Saludos


patilanz

Si lo hago con derechos de administrador funciona pero normalmente para currentVersion\Run no hace falta tenerlos.

El Registry Redirector ya lo conozco y me lo mueve a wow64 o algo así con permisos.

Danyfirex

para CurrentVersion\\Run hace falta derechos de administrador.


x64core

Si la función obtiene un handle entonces  el valor de retorno es ERROR_SUCCESS, en tu código escribes:
if (error== ERROR_SUCCESS){
Además para escribir en HKEY_LOCAL_MACHINE se necesitará privilegios de administrador si la UAC está habilitado.
-> HKEY_CURRENT_USER No necesita privilegios, lo importante es el root en dónde se escribirá.

patilanz

Gracias que despiste  :o
Perdón por el tema estúpido. Solucionado.