2012-12-10 1 views
5

Ho cercato su Internet la funzionalità UAC nel pulsante OK del modulo ma non ho potuto ottenere le informazioni. Tutte le informazioni relative all'implementazione del Controllo dell'account utente sono il rilancio dell'applicazione con i privilegi amministrativi.Controllo account utente sul pulsante OK

Il mio requisito è quello di rendere l'applicazione in cui quando l'utente fa clic sul pulsante OK con l'icona dello schermo su di esso, l'utente sarà in grado di salvare alcune informazioni nel registro di Windows tramite elevare il privilegio dell'utente ma non voglio rilanciare l'applicazione con diritti di amministratore.

+2

"Non voglio riavviare l'applicazione con i diritti di amministratore." Difficile. Il token di processo viene assegnato una volta all'avvio del processo. Quindi hai bisogno di almeno due processi. –

+0

@DavidHeffernan Sono necessari due processi, ma anziché riavviare lo stesso processo è possibile avviarne un altro completamente. – Servy

+0

@Servy Sì, puoi farlo. Ho letto la citazione dalla domanda che significa "Non voglio avviare un altro processo". –

risposta

7

Riavviare l'applicazione (o avviare un'applicazione di supporto) è ciò che si fa. È la richiesta di privilegi elevati durante l'avvio di un'applicazione che fa apparire la schermata di conferma UAC. Lo scopo di mostrare l'icona dello scudo è far sapere all'utente che è in arrivo la schermata di conferma, in pratica.

Non devi semplicemente riavviare la tua applicazione. Se l'applicazione consente più istanze, è possibile avviare una seconda copia con i parametri della riga di comando che indicano la modifica del Registro di sistema da apportare. Oppure puoi avere un'applicazione di aiuto che amministra le cose e avviarla quando necessario. Un'applicazione di supporto non ha bisogno di creare o mostrare una finestra; può essere un'operazione completamente in background.

-1

può essere che si dovrebbe aggiungere un'applicazione manifesto e richiede diritti di amministratore:

<?xml version="1.0" encoding="UTF-8" standalone="yes"?> 
    <assembly xmlns="urn:schemas-microsoft-com:asm.v1" manifestVersion="1.0"> 
    <trustInfo xmlns="urn:schemas-microsoft-com:asm.v3"> 
     <security> 
      <requestedPrivileges> 
       <requestedExecutionLevel level="requireAdministrator" uiAccess="false"/> 
      </requestedPrivileges> 
     </security> 
    </trustInfo> 
</assembly> 

Modifica

Esso non può essere la soluzione migliore qui, perché l'intera applicazione è in esecuzione in privilegi elevati e questa può essere una vulnerabilità di sicurezza.

+2

Il problema è che si esegue l'intera applicazione con privilegi elevati quando ne ha bisogno condizionatamente e raramente. Questa è una vulnerabilità di sicurezza in attesa di accadere. – Servy

+0

Nella sua domanda non è chiaro se vuole eseguire l'intera applicazione con privilegi elevati o no! Sicuramente ogni applicazione dovrebbe usare i privilegi minimi, ma questo non è sempre possibile! –

+1

Certo che è possibile, basta guardare l'altra risposta. La soluzione è avviare un secondo processo in background che esegue le poche operazioni che richiedono privilegi elevati. – Servy