Elevare un programma in esecuzione all'amministratore (Windows 7)


35

A volte potresti aprire un programma che vuoi eseguire come amministratore, ma potresti non averlo già aperto come amministratore. È possibile elevare i privilegi di un programma già in esecuzione in Windows 7 o devo chiudere e riavviare come amministratore?


8
sudo per la vittoria!
Josh K,

1
@Josh K - er - Come puoi elevare un'app già in esecuzione utilizzando sudo?
Sathyajith Bhat

È magico, dovresti decodificare man sudoper ulteriori informazioni.
Josh K,

2
@Josh, se non altro, puoi sempre usare pseudo ;)
Tomas Aschan,

Risposte:


26

Sfortunatamente no. Un processo in esecuzione non può essere elevato ai privilegi di amministratore. Sto cercando una fonte più autorevole, ma per ora ho trovato:

  1. "I programmi non possono essere elevati una volta che sono già stati avviati ..."

  2. "Il codice può essere elevato solo a livello di processo all'avvio, il che significa che un processo in esecuzione non può essere elevato."


1
Questo è assolutamente falso. L'API win32 supporta l'elevazione di applicazioni arbitrarie già in esecuzione, sebbene l'applicazione in questione debba esporre la funzionalità stessa. Questo articolo e il codice sorgente di accompagnamento dimostrano come ottenere questo risultato. È presumibilmente possibile che si possa scrivere un'applicazione per selezionare ed elevare altri processi ...
Fopedush,

8
@Fopedush Sebbene quell'articolo descriva questa tecnica come "auto-elevante", ciò che sembra che quei programmi di esempio stiano effettivamente facendo è lanciare una nuova istanza del processo usando ShellExecuteExe il verbo "runas". Non penso che soddisfi la necessità del PO di elevare un programma che è già in esecuzione (per esempio, perderà tutto il suo stato).
Stephen Jennings,

quando un'istanza di Total Commander 8.01 non elevata viene bloccata in un'operazione come la copia in una sottocartella dei file di programma, offre la possibilità di "riprovare come amministratore". Non può essere esteso a processi "estranei" (non auto)?
n611x007,

3
@naxa Non ho usato Total Commander, ma sarei disposto a scommettere che l'opzione "riprova come amministratore" genera in realtà un processo elevato completamente separato che esegue il lavoro privilegiato. Process Explorer lo fa quando si sceglie "Mostra dettagli per tutti i processi", avvia una nuova copia elevata di se stesso e chiude la copia non rilevata. In tal caso, i programmi devono essere scritti in modo specifico per sapere come avviare correttamente il secondo processo.
Stephen Jennings,

1
@StephenJennings Hai perfettamente ragione: l'esempio di codice che ho collegato in effetti si riavvia con il comando runas. Avrei dovuto controllare il codice oltre all'articolo prima di commentare. Avevo avuto l'impressione che l'API WIN32 esponesse una sorta di meccanismo di elevazione, ma forse non ricordo bene. Scorrerò e pubblicherò di nuovo se riesco a trovare quello a cui stavo pensando.
Fopedush,
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.