c # Предоставление разрешения «Вход в систему как сервис» пользователю Windows - PullRequest
11 голосов
/ 08 октября 2010

как мне предоставить пользователю право LogOnAsService на услугу?

Мне нужно сделать это вручную, в приложении services.msc я могу зайти в службу, изменить пароль (установив тот же, что был раньше), нажать «Применить», и я получу сообщение:

Аккаунт. \ Postgres был предоставлено право входа в систему как сервис.

Как мне сделать это из кода, потому что в противном случае я должен давать это разрешение вручную каждый раз, когда я запускаю приложение, а это невозможно

@ Стив

    static void Main()
    {
        // irrelevant stuff

        GrantLogonAsServiceRight("postgres");

        // irrelevant stuff
    }

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

и LSA от этого парня Вилли.

1 Ответ

10 голосов
/ 08 октября 2010

См. Предоставление прав пользователя в C # .

Вы должны вызывать API LSA через P / Invoke, и этот URL имеет ссылку на класс-оболочку , который делает это за вас. Итак, код, с которым вы в конечном итоге, прост:

private static void GrantLogonAsServiceRight(string username)
{
   using (LsaWrapper lsa = new LsaWrapper())
   {
      lsa.AddPrivileges(username, "SeServiceLogonRight");
   }
}
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...