Estoy tratando de crear dos menús contextuales para archivos .EXE en Windows 8, los cuales necesitarán privilegios de administrador. Como puedo ver en el registro, HKEY_CLASSES_ROOT \ exefile \ shell \ runas solo puede tener un comando y lo está utilizando el menú contextual "Ejecutar como administrador". En este momento, estoy usando este código en un archivo .reg:
[HKEY_CLASSES_ROOT\exefile\shell\Low Priority Run]
"HasLUAShield"=""
"MUIVerb"="&Low Resource Start"
[HKEY_CLASSES_ROOT\exefile\shell\Low Priority Run\command]
@="cmd.exe /c start /low /affinity 2 \"\" \"%1\""
[HKEY_CLASSES_ROOT\exefile\shell\Boost Application]
"HasLUAShield"=""
"MUIVerb"="&Boost Application"
[HKEY_CLASSES_ROOT\exefile\shell\Boost Application\command]
@="cmd.exe /c start /realtime \"\" \"%1\""
El indicador HasLUAShield parece mostrar solo un escudo elegante y no está elevando mi comando para ejecutarlo como administrador.
¿Por qué quiero que se ejecuten como administrador? Porque cuando no se ejecuta como administrador, no se otorga la prioridad "en tiempo real", sino que solo se asigna prioridad "alta" al exe en el menú de la aplicación Boost. Y en el Inicio de recursos bajos también, los archivos exe contenidos en (por ejemplo, la carpeta Archivos de programa) se ejecutan de manera normal (ni siquiera de baja prioridad, ni afinidad de CPU 1).
Además, noté en algunas entradas de "comando" en el registro, hay un% * al final. ¿Qué significa eso?
HasLUAShield
No se eleva. Simplemente dice que quieres la decoración. Si quieres elevar, entonces debes hacerlo tú mismo, por ejemplo, llamandoShellExecuteEx
con elrunas
verbo.