Подтвердить что ты не робот

С# Предоставление разрешения "Вход в систему" ​​пользователю Windows

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

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

Учетная запись. \postgres была предоставлено право входа в систему.

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

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

и LSA lib этим парнем Вилли.

4b9b3361

Ответ 1

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

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

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