Как сбросить grace period TS Windows Server 2008 R2
ВНИМАНИЕ: Все, что делается ниже на свой собственный страх и риск, сперва оттестируйте на тестовой системе, а после если все хорошо на боевой.
Когда поднимается терминальный сервер в организации, то как я вижу нет нужны сразу же его активировать можно использовать дефолтные 120
дней. Или же в организации просто нет денег или руководство считает, что в мире информационных технологий платить за что-то не приносящее материального дохода – это пустая трата денег. Вот в этом случае я хочу рассмотреть так называемую чистку определенного ключа реестра ответственного за данный Grace Period
На заметку: Все дальнейшие действия выполняются на любой учетной записи, которая включена в группу локальных администраторов системы, а также строки в консоли командной строки выполняются с применением «Запуск от имени администратора
»
Шаг №1: Сервер на базе Windows Server 2008 R2 Std SP1
развернут из образа успешно составленного с применением файла ответов заметки или же Вы можете его установить просто из образа скачанного с Microsoft Volume License Service
смотря как принято у Вас.
Шаг №2: Далее поднята роль Терминального сервера
Как развернуть терминальный сервер на базе Windows Server 2008 R2
Шаг №3: Сейчас терминальный сервер если он не активирован работает в режиме Grace Period
(Льготный период/Тестовый период) сроком на 120
дней об этом говорит всплывающее окно в правом нижнем углу экрана как если Вы зашли на него локального или через RDP
-сеанс:
«No Remote Desktop license server is specified.
Remote Desktop Services will stop working in 119 days if a license server is not specified.
Click this message to launch the RD Session Host Server Configuration tool to specify a license server for the RD Session Host server to use.”
Шаг №4: Чтобы узнать количество дней до окончания тестового период с целью, как ввода лицензий или сброса на опять 120
дней использования.
Поиск по документации сайта Microsoft (https://docs.microsoft.com/en-us/windows/win32/termserv/win32-terminalservicesetting)
От 07.10.2020 — ссылка ведет в никуда, поэтом качаю ее из своего хранилища необходимых файлов к заметкам отсюда.
вывел меня на class: win32_terminalservicesetting
и его метод: GetGracePeriodDays
Start – All Programs – Accessories
– и через правый клик мышью на «Command Prompt
” выбираю «Run as administrator
”, затем следующая команда:
Синтаксис использования wmic: wmic /namespace:\\root\<namespace> path <class name> get <attributes>
1234567891011121314151617 | C:\Users\Administrator>wmic /namespace:\\root\CIMV2\TerminalServices PATH Win32_TerminalServiceSetting where (__CLASS !=””) call getgraceperioddays Executing (\\SRV-TS\root\CIMV2\TerminalServices:Win32_TerminalServiceSetting.ServerName=”SRV-TS”)->getgraceperioddays() Method execution successful. Out Parameters: instance of __PARAMETERS { DaysLeft = 119; ReturnValue = 0; }; |
Ну а чтобы через одну длинную команду получить количество дней до окончания тестового периода использования терминального сервера:
123 | C:\Users\Administrator>wmic /namespace:\\root\CIMV2\TerminalServices PATH Win32_TerminalServiceSetting where (__CLASS !=””) call getgraceperioddays | findstr /I “DaysLeft” DaysLeft = 119; |
Если нужно определить сколько дней осталось на удаленном хосте, то команда обращения через утилиту wmic
выглядит:
123 | C:\Users\olloa>wmic /node:”srv-ts2″ /user:”olloa” /password:”<domain_password>” /namespace:\\root\CIMV2\TerminalServices PATH Win32_TerminalServiceSetting where (__CLASS !=””) call getgraceperioddays | findstr /I “DaysLeft” DaysLeft = 89; |
Где сервер srv-ts2
– это система на базе Windows Server 2012 R2 Standard
, а вот почему с Windows Server 2008 R2 Std SP1
у меня информация не снимается:
12345 | C:\Users\olloa>wmic /node:”srv-ts10″ /user:”olloa” /password:”<domain_password>” /namespace:\\root\CIMV2\TerminalServices PATH Win32_TerminalServiceSetting where (__CLASS !=””) call getgraceperioddays | findstr /I “DaysLeft” DaysLeft = 0; C:\Users\olloa> |
Итак: у меня не доменный терминальные сервер, а на нем есть две учетные записи:
Одна Login: Administrator
– это предустановленная и если под ней удаленно обратиться то информация снимается:
123 | C:\Users\olloa>wmic /node:”10.10.10.66″ /user:”Administrator” /password:”712mbddr@” /namespace:\\root\CIMV2\TerminalServices PATH Win32_TerminalServiceSetting where (__CLASS !=””) call getgraceperioddays | findstr /I “DaysLeft” DaysLeft = 119; |
Вторая Login: ekzorchik
(созданная и добавленная в группу локальных администраторов) и если под ней удаленно обратиться, то информация не снимается пишет – «Отказано в доступе
»
12345 | C:\Users\olloa>wmic /node:”10.10.10.66″ /user:”ekzorchik” /password:”712mbddr@” /namespace:\\root\CIMV2\TerminalServices PATH Win32_TerminalServiceSetting where (__CLASS !=””) call getgraceperioddays | findstr /I “DaysLeft” ОШИБКА. Описание: Отказано в доступе. |
В чем же причина?
Смотрю логи (Event View – Windows Logs – Application
) на srv-ts:
Log Name: Application
Source: WMI
Event ID: 5605
Description: The root\CIMV2\TerminalServices namespace is marked with the RequiresEncryption flag. Access to this namespace might be denied if the script or application does not have the appropriate authentication level. Change the authentication level to Pkt_Privacy and run the script or application again.
Дело в том, что если делать этот запрос локально на системе, то выполнится, а вот чтобы изменить уровень аутентификации для доступа к root\CIMV2
. Нашел документ (https://docs.microsoft.com/en-us/windows/win32/wmisdk/setting-the-default-process-security-level-using-vbscript
) по которому можно сделать скрипт:
1 | C:\Windows\system32>mkdir c:\test |
Создаю VBS
-скрипт, к примеру под именем: level.vbs
123 | strComputer = “srv-ts” Set objWMIService = GetObject(“winmgmts:{authenticationLevel=None}\\” & strComputer & “\root\CIMV2”) |
Запускаю скрипт и скрипт выполнился без ошибок:
123 | C:\Windows\system32>cscript c:\test\level.vbs C:\Windows\system32> |
Но лучше этого не делать, а пойти по пути наименьшего сопротивления:
- Либо под административной учетной записью подключаться
- Либо отключить
UAC
, перезагрузить компьютер и после командаwmic
отработает как надо:
Проверяю со своей рабочей станции под управлением Windows 10 Pro
что обратившись к терминальному серверу могу получить количество дней льготного использования терминального сервера:
123 | C:\Users\olloa>wmic /node:”10.10.10.66″ /user:”ekzorchik” /password:”712mbddr@” /namespace:\\root\CIMV2\TerminalServices PATH Win32_TerminalServiceSetting where (__CLASS !=””) call getgraceperioddays | findstr /I “DaysLeft” DaysLeft = 119; |
Шаг №5: Итак, вот вы используете терминальный сервер в триал режиме целых 120
дней, дни подходят к нулю, но вы не хотите вводить ключ лицензии, переустанавливать терминальный сервер тоже не вариант. Как быть в таком случае? На просторах интернета натыкался якобы на способ удаления определенного ключа реестра, но для этого требуется утилита subinacl.exe
(скачиваю ее с сайта Microsoft: https://www.microsoft.com/en-us/download/confirmation.aspx?id=23510
) копирую ее для удобства использования %systemroot%\system32
)
Этап №1: Сохраняем права доступа для раздела реестра
1234567 | C:\Windows\system32>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 |
Для себя смотрю содержимое файл grace.txt
, но содержимое для меня как китайская грамота.
Этап №2: Забираем владельца у ключа GracePeriod:
1234567891011 | C:\Windows\system32>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 |
Этап №3: Устанавливаем полные права доступа на ключ реестра GracePeriod:
123456789101112131415 | C:\Windows\system32>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 2 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 |
Этап №4: Удаляем ключ ответственный за триал период в 120
дней
123 | C:\Windows\system32>reg delete “HKLM\SYSTEM\CurrentControlSet\Control\Terminal Server\RCM\GracePeriod” /v L$RTMTIMEBOMB_1320153D-8DA3-4e8e-B27B-0D888223A588 /f The operation completed successfully. |
Этап №5: Возвращаем права доступа для раздела GracePeriod
к тем когда делали бекап в «Этапе №1»:
1 | C:\Windows\system32>subinacl.exe /playfile c:\test\grace.txt |
Лучше этого не делать, т.к. после потерял доступ к разделу GracePeriod
и получаю сообщение при открытии разрешений:
Заголовок окна: Error Opening Key
Тело: GracePeriod cannot be opened. An error is preventing this key from being opened. Details: Access is denied.
Также по RDP
к серверу. Чтобы восстановить доступ к серверу по RDP
у меня заработало следующее:
Удалил роль терминального сервера
Перезагрузился
По RDP авторизовался.
Но посмотреть разрешения на раздел GracePeriod
не могу через Regedit.exe
Раз у меня работают «Этап 2 & Этап 3” то применяю, получается, что есть права для администраторов. Попробую удалить данный раздел GracePeriod
и заново разверну роль Терминального сервера. Раздел GracePeriod
успешно создался, теперь смотрю права доступа чтобы из задокумментировать вручную:
Name: NETWORK SERVICE & SYSTEM
Apply to: This key only
Permissions:
Full Control | Allow |
Query Value | Allow |
Set Value | Allow |
Create Subkey | Allow |
Enumerate Subkeys | Allow |
Notify | Allow |
Create Link | Allow |
Delete | Allow |
Write DAC | Allow |
Write Owner | Allow |
Read Control | Allow |
Name: Administrators (SRV-TS\Administrators)
Apply to: This key only
Permissions:
Full Control | - | F |
Query Value | Apply | Q |
Set Value | - | S |
Create Subkey | - | C |
Enumerate Subkeys | Apply | E |
Notify | Apply | Y |
Create Link | - | L |
Delete | - | D |
Write DAC | - | W |
Write Owner | - | O |
Read Control | Apply | A |
Owner (Владелец)
Текущий владелец | NETWORK SERVICE |
Так возвращаюсь к началу, в частности к Этапу №5:
12345 | C:\Windows\system32>subinacl.exe /subkeyreg “HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\Control\Terminal Server\RCM\GracePeriod” /deny=Administrators= C:\Windows\system32>subinacl.exe /subkeyreg “HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\Control\Terminal Server\RCM\GracePeriod” /grant=Administrators=QEYA C:\Windows\system32>subinacl.exe /subkeyreg “HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\Control\Terminal Server\RCM\GracePeriod” /setowner=”NETWORK SERVICE” |
Этап №6: Перезагружаю систему для последующего использования терминального сервера:
1 | C:\Windows\system32>shutdown /r /t 3 |
И у меня снова 120
дней тестового использования терминального сервера, а такой трюк можно проделывать не один раз, получается компания Microsoft
создала, а люди нашли как бы багу и теперь ее пользуются. Такое решение применимо к тем организациям и личному использованию в рамках ответственности за принятое решение идти по пути не лицензирования. Итого заметка работоспособна. На этом я прощаюсь, с уважением автор блога Олло Александр aka ekzorchik.