Задача: Столкнулся что у меня на тестовом сервере для подрядчиков (пилят переход 1С 7.7 на 1С 8 или работу в паре) настал момент, когда Grace Period использования роли терминального сервера начал подходить к концу, оставалось около 9 дней бесплатного использования (из 120 дней полнофункционального использования).

  • ISO образ из которого установлена система: SW_DVD9_Win_Server_STD_CORE_2016_64Bit_English_-4_DC_STD_MLF_X21-70526.ISO
  • OS: Windows Server 2016 Std (Microsoft Windows [Version 10.0.14393])

Как всегда, сперва просили терминальный сервер для подрядчиков, а уже сейчас это сложная система с различными доступами в боевую сеть, хранилище конфигурации, доступы мобильных клиентов для отладки, но только я знаю, как оно устроено и что от чего зависит.

Для решения своей задачи я обратился к своего блогу: https://win.ekzorchik.ru где есть заметка "Как сбросить grace period TS Windows Server 2016"

но вот попытавшись на текущем месте работы проделать все по ней столкнулся:

Шаг №1: Смотрим количество дней, оставшихся в использовании терминальным сервером из 120 дефолтных, как оценочные:

Logon (Administrator) in system: srv-ts01

wmic /namespace:\\root\CIMV2\TerminalServices PATH Win32_TerminalServiceSetting where (__CLASS !="") call getgraceperioddays | findstr /I "DaysLeft"
        DaysLeft = 8;

Шаг №2: Обнаружил что в заметке ссылка на скачивание утилиты subinacl.msi битая, нашел в своем домашнем хранилище софта нужную утилиту. Ссылку поправил. Скачал, устанавливаю в текущую систему, каталог установки по умолчанию: C:\Program Files (x86)\Windows Resource Kits\Tools\, оставляю. После копирую из данного каталога, установленного по умолчанию утилиту subinacl.exe в каталог C:\Windows\system32

Win + X - Command Prompt (Admin)

C:\Users\Administrator>subinacl.exe
SubInAcl version 5.2.3790.1180
Invalid Argument !
Use :
SubInacl /help to get the usage information
or
SubInAcl /help syntax to understand SubInAcl syntax.

Шаг №3: Применяю действия из заметки по сбросу Grace Period:

Win + X - Command Prompt (Admin)

C:\Users\Administrator>mkdir c:\test

(Сохраняем права доступа для раздела реестра)

subinacl.exe /output=c:\test\grace.txt /subkeyreg "HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\Control\Terminal Server\RCM\GracePeriod"
Elapsed Time: 00 00:00:00
Done:        1, Modified        0, Failed        0, Syntax errors        0
Last Done  : HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\Control\Terminal Server\RCM\GracePeriod

(Забираем владельца у ключа GracePeriod)

subinacl.exe  /subkeyreg "HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\Control\Terminal Server\RCM\GracePeriod" /setowner=Administrators
SYSTEM\CurrentControlSet\Control\Terminal Server\RCM\GracePeriod : builtin\administrators is the new owner
HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\Control\Terminal Server\RCM\GracePeriod : 1 change(s)
Elapsed Time: 00 00:00:00
Done:        1, Modified        1, Failed        0, Syntax errors        0
Last Done  : HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\Control\Terminal Server\RCM\GracePeriod
C:\Users\Administrator>

(Устанавливаем полные права доступа на ключ реестра GracePeriod)

C:\Users\Administrator>subinacl.exe  /subkeyreg "HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\Control\Terminal Server\RCM\GracePeriod" /grant=Administrators=F
WARNING : Error parsing line + /subkeyreg
Use :
SubInacl /help to get the usage information
or
SubInAcl /help syntax to understand SubInAcl syntax.

Elapsed Time: 00 00:00:00
Done:        0, Modified        0, Failed        0, Syntax errors        1
Last Syntax Error:WARNING : Error parsing line + /subkeyreg

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

C:\Users\Administrator>subinacl.exe  /subkeyreg "HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\Control\Terminal Server\RCM\GracePeriod" /grant=Administrators=F
SYSTEM\CurrentControlSet\Control\Terminal Server\RCM\GracePeriod : delete Perm. ACE 4 builtin\administrators
SYSTEM\CurrentControlSet\Control\Terminal Server\RCM\GracePeriod : new ace for builtin\administrators
HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\Control\Terminal Server\RCM\GracePeriod : 2 change(s)


Elapsed Time: 00 00:00:00
Done:        1, Modified        1, Failed        0, Syntax errors        0
Last Done  : HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\Control\Terminal Server\RCM\GracePeriod
C:\Users\Administrator>

(Удаляем ключ ответственный за триал период в 120 дней)

C:\Users\Administrator>reg delete "HKLM\SYSTEM\CurrentControlSet\Control\Terminal Server\RCM\GracePeriod" /v L$RTMTIMEBOMB_1320153D-8DA3-4e8e-B27B-0D888223A588 /f
The operation completed successfully.

На заметку: действия по изменению прав доступа выше обязательно должны отработать у Вас в противном случае Вы не сможете удалить ключ реестра ответственный за триал период в 120 дней.

(Возвращаю изначально выставленные системой права доступа на реестр)

Возвращаю изначально выставленные системой права доступа на реестр

На заметку: между subinacl.exe и ключом /subkeyreg не дожно быть более одного пробела

subinacl.exe /subkeyreg -> только один пробел должен быть

только тогда команда отработала

C:\Users\Administrator>subinacl.exe /subkeyreg "HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\Control\Terminal Server\RCM\GracePeriod" /deny=Administrators=
SYSTEM\CurrentControlSet\Control\Terminal Server\RCM\GracePeriod : delete Perm. ACE 4 builtin\administrators
HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\Control\Terminal Server\RCM\GracePeriod : 1 change(s)


Elapsed Time: 00 00:00:00
Done:        1, Modified        1, Failed        0, Syntax errors        0
Last Done  : HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\Control\Terminal Server\RCM\GracePeriod

C:\Users\Administrator>subinacl.exe /subkeyreg "HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\Control\Terminal Server\RCM\GracePeriod" /grant=Administrators=QEYA
SYSTEM\CurrentControlSet\Control\Terminal Server\RCM\GracePeriod : new ace for builtin\administrators
HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\Control\Terminal Server\RCM\GracePeriod : 1 change(s)


Elapsed Time: 00 00:00:00
Done:        1, Modified        1, Failed        0, Syntax errors        0
Last Done  : HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\Control\Terminal Server\RCM\GracePeriod

C:\Users\Administrator>subinacl.exe /subkeyreg "HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\Control\Terminal Server\RCM\GracePeriod" /setowner="NETWORK SERVICE"
SYSTEM\CurrentControlSet\Control\Terminal Server\RCM\GracePeriod : nt authority\network service is the new owner
HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\Control\Terminal Server\RCM\GracePeriod : 1 change(s)


Elapsed Time: 00 00:00:00
Done:        1, Modified        1, Failed        0, Syntax errors        0
Last Done  : HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\Control\Terminal Server\RCM\GracePeriod

C:\Users\Administrator>

(Отлично! Отправляем систему в перезагрузку активации)

C:\Users\Administrator> shutdown /r /t 3

(Проверяем количество дней на использование)

C:\Users\Administrator>wmic /namespace:\\root\CIMV2\TerminalServices PATH Win32_TerminalServiceSetting where (__CLASS !="") call getgraceperioddays | findstr /I "DaysLeft"

        DaysLeft = 119;

C:\Users\Administrator>

Шаг №3: А теперь рассмотрим действия которые можно сделать не прибегая к установке утилиты subinacl.exe в систему, делать будем GUI средствами системы. Запускаем реестр (regedit.exe) предварительно авторизовавшись в системе с правами локального Администратора:

Win + R - regedit.exe

открываем ключ:

HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\Control\Terminal Server\RCM\GracePeriod

через правый клик мышью на GracePeriod открываем Permissions, Advanced.

По умолчанию владельцем значится: Owner: Network Services

Дефолтные права на каталог GracePeriod в реестре

нажимаем Change, указываем учетную запись Administrator и отмечаем галочкой Replace owner on subcontainers and objects и Replace all child object permission entries with inheritable permission entries from this object

(см. скриншот ниже для наглядного понимания)

Изменяю права доступа на каталог GracePeriod в реестре

нажимаю Apply, Yes, OK

После чего группу Administrators даем все права: Full Control отмечаем галочкой и нажимаем Apply, OK

(см. скриншот ниже для наглядного понимания)

Даю полные права группе Administrators на каталог GracePeriod и всю вложенную структуру

и только теперь у текущей учетной записи (Login: Administrator) есть права на удаление ключа ответственного за триал период в 120 дней, через правый клик мышью на нем и выбираю Delete, Yes

(см. скриншот ниже для наглядного понимания)

Удаляю ключ ответственный за триал период в 120 дней

Затем отправляю систему в перезагрузку, после система автоматически создал необходимый ключ и у Вас снова 120 дней полнофункционального использования роли терминального сервера.

Win + X - Shut down or sign out - Restart, Continue

На заметку: Можно, как и через консоль командной строки с применение утилиты subinacl.exe вернуть права на реестр, а можно и оставить как есть дабы в дальнейшем уже не прибегать к помощи данной заметки.

На заметку: Заметки по Grace Period опубликованные для Server 2008 R2, 2012R2, Server 2016, Server 2019 с учетом данной все действующие и работоспособные.

Итого: Когда один раз делаешь что-либо, составляешь заметку и порой все по ней отрабатывает, а если проходит много времени, возвращаясь к ней всегда всплывают нюансы, которые тогда посчитал не сильно значимыми и не отразил их в заметке, но я не забыл на этот раз и дополнил заметку — а это Важно. Так по большей части только мне и предстоит ждать помощи только от себя самого.

Заметка работоспособна, на этом у меня все, с уважением автор блога Олло Александр aka ekzorchik.

От ekzorchik