Condividi tramite


Esecuzione con privilegi di amministratore

Il primo passaggio per stabilire il tipo di account in cui deve essere eseguita l'applicazione consiste nell'esaminare le risorse usate dall'applicazione e le API con privilegi che chiamerà. È possibile che l'applicazione, o parti di grandi dimensioni, non richieda privilegi di amministratore. La scrittura di codice sicuro, di Michael Howard e David LeBlanc offre una descrizione eccellente di come eseguire questa valutazione ed è altamente consigliato. Questa risorsa potrebbe non essere disponibile in alcune lingue e paesi.

È possibile fornire i privilegi necessari all'applicazione con una minore esposizione agli attacchi dannosi usando uno degli approcci seguenti:

  • Eseguire con un account con privilegi inferiori. Un modo per eseguire questa operazione consiste nell'usare PrivilegeCheck per determinare quali privilegi sono abilitati in un token. Se i privilegi disponibili non sono adeguati per l'operazione corrente, è possibile disabilitare tale codice e chiedere all'utente di accedere a un account con privilegi di amministratore.
  • Suddividere in funzioni dell'applicazione separate che richiedono autorizzazioni di amministratore. È possibile fornire all'utente un collegamento che esegue il comando RunAs. Per istruzioni dettagliate su come configurare il collegamento, cercare "runas" nella Guida. A livello di codice, è possibile configurare il comando RunAs nella chiave del Registro di sistema Della chiave AppId per l'applicazione.
  • Autenticare l'utente chiamando CredUIPromptForCredentials (GUI) o CredUICmdLinePromptForCredentials (riga di comando) per ottenere nome utente e password. Per un esempio, vedere Chiedere all'utente le credenziali.
  • Rappresenta l'utente. Un processo che inizia con un account con privilegi elevati come System può rappresentare un account utente chiamando ImpersonateLoggedOnUser o funzioni di rappresentazione simili, riducendo così il livello di privilegio. Tuttavia, se una chiamata a RevertToSelf viene inserita nel thread, il processo torna ai privilegi di sistema originali.

Se si è determinato che l'applicazione deve essere eseguita con un account con privilegi di amministratore e che una password amministratore deve essere archiviata nel sistema software, vedere Gestione delle password per i metodi di questa operazione in modo sicuro.