Para asegurarse de que el instalador se está ejecutando como administrador general recomiendo este pequeño ejemplo:
Outfile RequireAdmin.exe
RequestExecutionLevel admin ;Require admin rights on NT6+ (When UAC is turned on)
!include LogicLib.nsh
Function .onInit
UserInfo::GetAccountType
pop $0
${If} $0 != "admin" ;Require admin rights on NT4+
MessageBox mb_iconstop "Administrator rights required!"
SetErrorLevel 740 ;ERROR_ELEVATION_REQUIRED
Quit
${EndIf}
FunctionEnd
Page InstFile
Section
SectionEnd
la aplicación instalada debe realizar pasos similares si siempre tiene que ejecutar como administrador, para una aplicación Win32 que sería :
Si "se ejecuta automáticamente como administrador" significa que se pasa por alto la elevación UAC, entonces eso no es posible, ¡el objetivo de UAC es permitir al usuario confirmar/denegar operaciones privilegiadas! Algunas aplicaciones solucionan esto instalando un servicio NT que realiza cualquier operación que requieran en nombre de la aplicación. No recomendaría esto porque llena los servicios de la máquina de los usuarios y podría debilitar la seguridad del sistema si el servicio no está codificado correctamente.
Si no escribió la aplicación que está instalando, entonces sus opciones son un poco más limitadas. Si la aplicación no tiene ningún manifiesto, puede utilizar un manifiesto external (myapp.exe.manifest
) .
Establecer la cadena RUNASADMIN bajo la clave AppCompatFlags no es realmente algo que el instalador debería estar haciendo, se supone que esas opciones de compatibilidad deben ser controladas por el usuario, no por las aplicaciones.
El hilo del foro se ha vinculado a decir también de twoways para establecer el indicador SLDF_RUNAS_USER
en un acceso directo, esto no va a garantizar que la aplicación se inicia como administrador en todas las situaciones, sólo cuando la aplicación se inicia desde el acceso directo pero podría ser su única opción si no puede cambiar la aplicación en sí ...
Gracias por su tiempo. Muy buena respuesta ... – MoonKnight
¡Brillante de hecho! – MoonKnight