С# Предоставление разрешения "Вход в систему" пользователю 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 этим парнем Вилли.
Ответы
Ответ 1
См. Предоставление прав пользователя в С#.
Вы должны вызывать API LSA через P/Invoke, и этот URL имеет ссылку на класс-оболочку, который делает это за вас. Итак, код, с которым вы в конечном итоге, прост:
private static void GrantLogonAsServiceRight(string username)
{
using (LsaWrapper lsa = new LsaWrapper())
{
lsa.AddPrivileges(username, "SeServiceLogonRight");
}
}