Il menu contestuale multiplo viene eseguito come amministratore tramite l'editor del registro


0

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 chiamando ShellExecuteEx con il runas verbo.

% * è batch per "tutti gli argomenti della riga di comando"

@ RaymondChen, significa che è impossibile ciò che sto cercando senza usare / creare un altro programma per gestirlo? Perché piuttosto rallenterebbe l'inizio del programma nel menu Boost Application.

@PeterWright, grazie. Ciò significa che% * trasferirà semplicemente gli argomenti passati sul file originale che viene lanciato.

StackOverflow è per problemi di programmazione. Se non vuoi programmare, prova con Superuser.

Risposte:


0

Ehi, sono riuscito a risolvere questo tuo problema:

  1. Crea una copia di cmd.exe di nome cmd1.exe. Vai con entrambi C:\Windows\System32 e C:\Windows\SysWOW64.
  2. Nel Compatibility scheda del cmd1.exe, dai un'occhiata Run this program as an administrator nel Properties menu.
  3. Cambia le tue chiavi di registro da cmd.exe a cmd1.exe.
  4. Esegui un programma attraverso il tuo contesto Boost Application e una conferma UAC si apre e vai. Suppongo che ci sia un comando o un argomento che puoi usare ma, questo è un buon modo per aggirare facilmente il tuo problema! Ha funzionato bene sulla mia macchina virtuale con Windows 8.1.
Utilizzando il nostro sito, riconosci di aver letto e compreso le nostre Informativa sui cookie e Informativa sulla privacy.
Licensed under cc by-sa 3.0 with attribution required.