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:
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
Hola.
http://msdn.microsoft.com/en-us/library/windows/desktop/aa384232(v=vs.85).aspx
verifica que tengas derechos de administrador.
Saludos
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.
para CurrentVersion\\Run hace falta derechos de administrador.
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á.
Gracias que despiste :o
Perdón por el tema estúpido. Solucionado.