Sto cercando di creare due menu contestuali per i file .EXE in Windows 8, entrambi i quali necessitano di privilegi di amministratore. Come posso vedere nel registro, HKEY_CLASSES_ROOT \ exefile \ shell \ runas può avere solo un comando ed è utilizzato dal menu di scelta rapida "Esegui come amministratore". In questo momento sto usando questo codice in un file .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\""
Il flag HasLUAShield sembra mostrare solo schermature di fantasia e non sta elevando il mio comando per essere eseguito come amministratore.
Perché voglio che vengano eseguiti come amministratore? Perché quando non viene eseguito come amministratore, la priorità "tempo reale" non viene assegnata, ma solo la priorità "alta" viene assegnata all'exe nel menu Boost Application. E anche nel Low Resource Start, i file exe contenuti in (ad esempio, la cartella Program Files) funzionano come normali (nemmeno con priorità bassa, né CPU 1 Affinity).
Inoltre, ho notato in alcune voci "comando" nel registro, c'è un% * alla fine. Cosa significa?
HasLUAShield
non eleva. Dice solo che vuoi la decorazione. Se vuoi elevare, allora devi fare l'elevazione da solo, ad esempio chiamandoShellExecuteEx
con ilrunas
verbo.