windows - serlo - ¿Cómo crear un acceso directo para iniciar una aplicación con privilegios de administrador desde la línea de cmd?
quitar ejecutar como administrador a un programa (2)
Puede agregar una clave de registro que le indique a Windows que ejecute su programa como administrador:
En HKCU/Software/Microsoft/Windows NT/CurrentVersion/AppCompatFlags/Layers
, simplemente agregue una clave (REG_SZ) <Path to your exe>
RUNASADMIN
<Path to your exe>
con el valor RUNASADMIN
. Cuando ejecute su exe, se le pedirá acceso de administrador.
Con eso, puedes simplemente crear un acceso directo normal a tu ejecutable como lo harías con Inno-Setup.
Si desea hacerlo a través de un cmd o un archivo por lotes, puede usar el siguiente comando:
reg add "HKCU/Software/Microsoft/Windows NT/CurrentVersion/AppCompatFlags/Layers" /v "<Path to your exe>" /t REG_SZ /d RUNASADMIN
Tengo un instalador (Inno-Setup) que instala mi aplicación en una ruta definida por el usuario. Al final de la rutina de instalación, quiero crear un acceso directo que inicie la aplicación con privilegios de administrador. La solución debería funcionar en todas las versiones de WinXP a Win7.
¿Qué puedo hacer para lograr esto?
Sé que es posible con un script por lotes, que ejecuta un vb-script desagradable . La desventaja es que la ventana emergente de la ventana de cmd y solo funciona en win7, supongo.
También probé el comando mklink
para crear un hipervínculo, pero no funciona porque no es posible pasar un argumento que establezca los privilegios del administrador.
El "Ejecutar como administrador" es una propiedad del ejecutable, no del acceso directo. Debe agregar el manifiesto requerido que hace que Windows solicite la elevación.
Para hacer esto en Windows XP, necesitará usar el verbo runas
con ShellExecute()
para ejecutarlo como un usuario diferente, pero esto eliminará cualquier posibilidad de acceder al perfil local. Esto se puede hacer desde su ejecutable cuando descubre que no se está ejecutando con acceso de administrador completo.