C# предоставление разрешения" войти в систему как Служба " пользователю windows

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

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

учетная запись .Постгреса была предоставлено право входа в систему как Службы.

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

@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 этого парня Вилли.

1 ответов


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

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

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