TL; DR : l'unica opzione è generare un altro processo. (Un nuovo cmd.exe
.) Nel caso del Prompt dei comandi, l' avvio di una nuova istanza con un token di accesso con autorizzazioni più elevate comporterà sempre la creazione di una nuova finestra .
Non è possibile concedere autorizzazioni aggiuntive a un processo già in esecuzione .
Quando un utente con diritti amministrativi accede a una macchina Windows con User Account Control (UAC) abilitato, vengono creati due token di accesso separati :
- Uno con accesso completo da amministratore e
- Un secondo "token filtrato" con accesso utente standard
Al momento della CMD.EXE
creazione di un processo (ad es. ), Viene assegnato uno di questi due token di accesso . Se il processo viene eseguito "elevato" come amministratore, viene utilizzato il token di accesso non filtrato. Se al processo non vengono concessi i diritti di amministratore, viene utilizzato il token utente standard filtrato.
Una volta creato un processo, non è possibile sostituire il suo token di accesso . 1 In questo thread MSDN Application Security per Windows Desktop , un poster che si identifica come membro del Team del kernel di Windows indica:
Il kernel NT non è mai stato progettato per consentire il passaggio di token dopo l'avvio di un processo. Questo perché gli handle, ecc. Potrebbero essere stati aperti in un vecchio contesto di sicurezza, le operazioni in volo potrebbero utilizzare contesti di sicurezza incoerenti, ecc. Pertanto, in genere non ha senso cambiare il token di processo una volta avviata l'esecuzione. Tuttavia, questo non è stato applicato fino a Vista . [enfasi mia] (fonte grazie a @Ben N )
Nota: il controllo dell'account utente è stato introdotto con il rilascio di Windows Vista .
Questa risposta da superutente cita due fonti aggiuntive che confermano lo stesso:
Pertanto non è semplicemente possibile elevare il prompt dei comandi o qualsiasi altro processo sul posto. L'unica opzione è generare un altro processo con un nuovo token di accesso (che può essere un'altra istanza del processo originale se lo si desidera). Nel caso del Prompt dei comandi, l'avvio di una nuova istanza con un token di accesso con autorizzazioni superiori comporterà sempre la creazione di una nuova finestra e se i prompt UAC sono abilitati sul sistema, verranno attivati anche.
1 È possibile regolare i privilegi in un token di accesso esistente con la funzione AdjustTokenPrivileges , ma secondo MSDN :
La funzione AdjustTokenPrivileges non può aggiungere nuovi privilegi al token di accesso. Può solo abilitare o disabilitare i privilegi esistenti del token.