2010-10-08 9 views
11

come concedere a un utente il servizio LogOnAs per un servizio?C# Concessione dell'autorizzazione "Accedi come servizio" a un utente Windows

ho bisogno di fare questa operazione manualmente, nel services.msc app posso andare al servizio, modificare la password (impostazione lo stesso che c'era prima), fare clic su Applica e ottengo un messaggio:

L'account. \ Postgres è stato concesso il diritto Accedi come servizio.

Come faccio a fare questo dal codice, perché altrimenti devo dare questa autorizzazione a mano ogni volta che faccio funzionare l'applicazione e questa non è una possibilità

@Steve

static void Main() 
    { 
     // irrelevant stuff 

     GrantLogonAsServiceRight("postgres"); 

     // irrelevant stuff 
    } 

    private static void GrantLogonAsServiceRight(string username) 
    { 
     using (LsaWrapper lsa = new LsaWrapper()) 
     { 
      lsa.AddPrivileges(username, "SeServiceLogonRight"); 
     } 
    } 

e il lib di LSA di questo ragazzo Willy.

risposta

10

Vedere Granting User Rights in C#.

È necessario richiamare le API LSA tramite P/Invoke e tale URL ha un riferimento a uno wrapper class che lo fa per te. Quindi, il codice si finisce con è semplice:

private static void GrantLogonAsServiceRight(string username) 
{ 
    using (LsaWrapper lsa = new LsaWrapper()) 
    { 
     lsa.AddPrivileges(username, "SeServiceLogonRight"); 
    } 
} 
+0

Sembra fantastico, ma ho Win32UnhandledException: Il parametro non è corretto – bevacqua

+0

@Nico - che cosa fa il tuo look codice come? –

+0

leggi il mio aggiornamento @original post – bevacqua

Problemi correlati