2010-10-08 17 views
11

Jak przyznać użytkownikowi uprawnienie LogOnAsService do świadczenia usługi?C# Udzielanie uprawnień "Logowanie jako usługa" do użytkownika systemu Windows

muszę to zrobić ręcznie, w services.msc aplikacji mogę iść do serwisu, należy zmienić hasło (to samo ustawienie, które nie było wcześniej), kliknij przycisk Zastosuj i pojawia się komunikat:

Konto. \ Postgres zostało przyznane prawo Log On As Service.

Jak zrobić to z kodu, ponieważ w przeciwnym razie muszę dać to uprawnienie ręcznie za każdym razem uruchomić aplikację i nie jest to możliwość

@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"); 
     } 
    } 

i LSA lib przez tego faceta, Willy'ego.

Odpowiedz

10

Zobacz Granting User Rights in C#.

Musisz wywołać interfejsy API LSA za pomocą P/Invoke, a ten URL ma odniesienie do wrapper class, które to robi. Więc kod skończyć z jest prosta:

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

brzmi świetnie, ale mam Win32UnhandledException: Parametr jest niepoprawny – bevacqua

+0

@Nico - co robi Twój kod wyglądać? –

+0

przeczytać moją aktualizację @original post – bevacqua

Powiązane problemy