Позвольте IIS AppPool выключить компьютер из сети

362
Talset

Я пытаюсь отключить локальный компьютер через веб-службу, размещенную в IIS.

У меня есть IIS AppPool под названием «Foobar», поэтому его полной строкой будет «IIS AppPool \ Foobar». Этот пул приложений в настоящее время работает под именем «LocalSystem». Когда я выключаю компьютер, вызывая bool ExitWindowsEx(int flags, int reason);(например, ExitWindowsEx(EWX_SHUTDOWN, 0)) в коде ASP.NET, Windows дает мне

Код системной ошибки 1314 (0x522) - требуемая привилегия не удерживается клиентом

Тем не менее, если я изменяю идентификатор Foobar IIS AppPool на пользователя ОС администратора вместо LocalSystem, он позволяет мне выключить компьютер из веб-службы. Но я не хочу работать под учетной записью ОС администратора (да, я знаю, что SYSTEM также обладает высокими привилегиями, но не позволяет мне выключать компьютер).

Вопрос: Как я могу сделать так, чтобы я мог успешно вызывать ExitWindowsEx из встроенной учетной записи LocalSystem (или даже из встроенного ApplicationPoolIdentity) вместо использования идентификатора пользователя ОС?

Я пытался:

  1. Редактирование локальной политики. В локальной политике безопасности как SYSTEM, так и «IIS APPPOOL \ Foobar» могут «Завершение работы системы» и «Принудительное завершение работы из удаленной системы».

  2. Используя ntrights

    ntrights -u "IIS AppPool\Foobar" +r SeRemoteShutdownPrivilege

а также ntrights -u "IIS AppPool\Foobar" +r SeShutdownPrivilege

Ни одна ошибка 1314 не исчезнет.

0

0 ответов на вопрос

Похожие вопросы