2011-01-17 10 views
6

Ho utilizzato il file manifest dell'applicazione come descritto in here per avere una parte della mia applicazione in esecuzione con privilegi elevati (di cui ha bisogno).
Quindi, quando necessario, il programma principale richiama solo un piccolo assieme utilizzando Process.Start che quindi gestisce l'attività per cui sono necessari i diritti di amministratore.Come eseguire un'altra app come amministratore su Windows XP

Tuttavia, come posso fare la stessa cosa su Windows XP?
Sembra XP ignora questo manifest e esegue il piccolo assieme nel contesto utente corrente.

risposta

9

Il seguente codice here fa proprio quello che mi serve:

ProcessStartInfo processStartInfo = new ProcessStartInfo("path", "args"); 
processStartInfo.Verb = "runas"; 

using (Process process = new Process()) 
{ 
    process.StartInfo = processStartInfo; 
    process.Start(); 
    process.WaitForExit(); 
} 

Quindi, in realtà è necessario impostare "runas" a ProcessStartInfo.Verb. Con l'allegata manifesta questo codice ora funziona bene su Windows XP, Vista e 7.

Aggiornamento:
Vedi anche this answer to a similar question. Questo è fondamentalmente lo stesso codice, usando solo gli argomenti.

+0

il problema è che la finestra di dialogo Esegui di XP SP3 è in esecuzione mentre l'utente corrente è spuntato per impostazione predefinita, e persino gli zecche "proteggono il mio computer ei dati dall'attività di programma non autorizzato" - questo riduce effettivamente i privilegi! – eug

2

Windows XP non ha un controllo dell'account utente.

È necessario chiamare Process.Start con le credenziali di accesso di un utente con privilegi amministrativi.

3

È possibile utilizzare il comando runas.