Помилка установки / видалення ролей в Windows Server не вдається завершити операцію, потрібно перезавантажити сервер

При установці будь-якій ролі або компонента в Windows Server 2016 з'являється помилка, що сервер вимагає перезавантаження: "The operation can not be completed, because the server that you specified requires a restart"(Збій запиту на додавання або видалення компонентів на зазначеному сервері. Неможливо завершити операцію, так як потрібно перезавантажити вказаний сервер). Ок, перезавантажуємо сервер, намагаємося встановити роль і знову з'являється помилка, що потрібне перезавантаження сервера. Але помилка повторюється, і так далі по циклу.

В результаті не виходить встановити / видалити жодну з ролей / компонентів на сервері.

У журналі подій сервера (Event Viewer -> Windows Logs -> System) при цьому фіксіруетсся помилка EventID 7041 від джерела Service Control Manager. У події зазначено:

This service account does not have the required user right "Log on as a service".

Щоб вирішити проблему, необхідно надати права входу в якості служби для "NT SERVICE \ ALL SERVICES» (і для NT SERVICE \ MSSQL $ MICROSOFT ## WID, якщо помилка пов'язана з установкою ролі сервера оновлень WSUS або SQL Server).

  1. Відкрийте консоль управління локальними політиками gpedit.msc;
  2. Перейдіть в розділ Computer Configuration -> Windows Settings -> Security Settings -> Local Policies -> User Rights Assignment;
  3. Знайдіть політику Log on as a service (Вхід в якості служби);
  4. Як ви бачите, в політиці входу як служби відсутня NT SERVICE \ ALL SERVICES. Спробуємо її додати -> Add User or Group -> NT SERVICE \ ALL SERVICES. З'являється помилка: система не може знайти цю службовому обліковому записі;

Як же додати в локальну політику сервісну обліковий запис? Єдиний нормальний спосіб, який мені вдалося знайти, щоб надати права "Log on as a service" для NT SERVICE \ ALL SERVICES - скористатися утилітою ntrights.exe (З старого пакета Windows Server 2003 Resource Kit).

Скачайте і встановіть Server 2003 Resource Kit (rktools.exe), потім надайте право SeServiceLogonRight командами:

cd "C: \ Program Files (x86) \ Windows Resource Kits \ Tools"
ntrights.exe + r SeServiceLogonRight -u "NT SERVICE \ ALL SERVICES"

Granting SeServiceLogonRight to NT SERVICE \ ALL SERVICES ... successful

Якщо в списку поточних прав відсутня NETWORK SERVICE, обов'язково додайте і цей аккаунт. Якщо потрібно, додайте аналогічно права для NT SERVICE \ MSSQL $ MICROSOFT ## WID:

ntrights.exe + r SeServiceLogonRight -u "NT SERVICE \ MSSQL $ MICROSOFT ## WID"

Перевіряємо, що NT SERVICE \ ALL SERVICES з'явилося в дозволах "Log on as a service" в консолі редактора політики.

Перезавантажте свій Windows Server і спробуйте встановити / видалити роль. Все повинно пройти без помилки.