PDA

Показать полную графическую версию : Клиентские лицензии


Tonny_Bennet
05-06-2012, 09:57
Здравствуйте. Все знают, что при работе с терминальным сервером и временными лицензиями через 90 дней на клиентской машине вылезает ошибка лицензирования. И как все знают лечится данная ошибка удалением ветки в реестре:

HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\MSLicensing

Я это делаю скриптом *.bat. Но если эту операцию проделать в Windows 7 то потом нужно от имени администратора запустить программу подключения к удалённому рабочему столу, чтобы эта ветка реестра создалась.

Отсюда вопрос:

Если в планировщик заданий всунуть скрипт по удалению ветки реестра, и указать пользователя от имени которого производится запуск, (пусть это будет администратор) ветка реестра удалится но как быть с запуском подключения к удалённому рабочему столу от имени администратора? Просто запуск mstsc.exe результата не даёт - ветка реестра не создаётся. Я так понимаю, что нужно инициализировать подключение к определённому терминальному серверу, чтобы в реестре прописалась временная лицензия. Как автоматизировать процесс?

Iska
05-06-2012, 12:07
Указывайте имя хоста:
mstsc.exe /v:TerminalMachine
@echo off
setlocal enableextensions enabledelayedexpansion

set sMachine=%~1

if defined sMachine (
>nul ping.exe -w 1000 -n 1 "%sMachine%" && (
reg.exe delete "\\%sMachine%\HKEY_LOCAL_MACHINE\Software\Microsoft\MSLicensing" /f
wmic.exe /NODE:"%sMachine%" Process Call Create "mstsc.exe /v:TerminalMachine"
>nul ping.exe -w 1000 -n 2 localhost
wmic.exe /NODE:"%sMachine%" Process where "Name='mstsc.exe'" Call Terminate
) || echo Can't connect to [%sMachine%]
) else (
echo Usage: %~nx0 ^<Machine name^>
)

endlocal
exit /b 0

Tonny_Bennet
05-06-2012, 12:55
Iska, спасибо. Скрипт интересный. Но вот как быть если компов несколько и указать у какой машины закончился срок временной лицензии нет возможности?

Iska
05-06-2012, 23:00
Этот пакетный файл на аварийный случай: уже по факту я просто запускаю его непосредственно из сети (такой запуск возможен:
Windows Registry Editor Version 5.00

[HKEY_CURRENT_USER\Software\Microsoft\Command Processor]
"DisableUNCCheck"=dword:00000001
), подставив имя потребной машины в качестве параметра из сетевого окружения Far Manager'а.
Но вот как быть если компов несколько… »
Например, так:
@echo off
setlocal enableextensions enabledelayedexpansion

:Repeat
set sMachine=%~1

if defined sMachine (
>nul ping.exe -w 1000 -n 1 "%sMachine%" && (
reg.exe delete "\\%sMachine%\HKEY_LOCAL_MACHINE\Software\Microsoft\MSLicensing" /f
wmic.exe /NODE:"%sMachine%" Process Call Create "mstsc.exe /v:TerminalMachine"
>nul ping.exe -w 1000 -n 2 localhost
wmic.exe /NODE:"%sMachine%" Process where "Name='mstsc.exe'" Call Terminate
) || echo Can't connect to [%sMachine%]
) else (
goto :eof
)

shift
goto :Repeat

endlocal
exit /b 0
…и указать у какой машины закончился срок временной лицензии нет возможности? »
Это как?

Tonny_Bennet
06-06-2012, 09:25
уже по факту я просто запускаю его непосредственно из сети »

т.е. файл запускается не с "проблемной" машины?

Цитата Tonny_Bennet:
…и указать у какой машины закончился срок временной лицензии нет возможности? »
Это как? »

Если я удалил ветку реестра и с компа win7 запускаю подключение от имени администратора к Server1, то потом к этому серверу может подключится и обычный юзер. А если обычный юзер захочет подключиться к Server2, у которого тоже закончился срок лицензии и я первом шаге удалил ветку реестра, юзер не сможет подключится. Нужно будет сначала подключится от имени админа, чтобы ветка создалась. А потом уже можно и из под юзера подключаться к server2. (Это всё если у Server1 и Server2 разные сервера лицензирования)

Iska
06-06-2012, 10:28
т.е. файл запускается не с "проблемной" машины? »
Нет, его запускают «ручками», по факту случившегося, администраторы для «проблемной» машины — путём указания её имени параметром данного пакетного файла.

Если я удалил ветку реестра и с компа win7 запускаю подключение от имени администратора к Server1, то потом к этому серверу может подключится и обычный юзер. А если обычный юзер захочет подключиться к Server2, у которого тоже закончился срок лицензии и я первом шаге удалил ветку реестра, юзер не сможет подключится. Нужно будет сначала подключится от имени админа, чтобы ветка создалась. А потом уже можно и из под юзера подключаться к server2. (Это всё если у Server1 и Server2 разные сервера лицензирования) »
Ясно. Попробуйте для эксперимента указать в озвученном пакетном файле (http://forum.oszone.net/post-1928407.html#post1928407) несколько команд для подключения, продублировав команду «mstsc.exe /v:TerminalMachine», наподобие:
wmic.exe /NODE:"%sMachine%" Process Call Create "mstsc.exe /v:Server1"
wmic.exe /NODE:"%sMachine%" Process Call Create "mstsc.exe /v:Server2"

wmic.exe /NODE:"%sMachine%" Process Call Create "mstsc.exe /v:ServerN"
— сработает? Дублировать команду удаления процессов «mstsc.exe» — для эксперимента — не надо. А вот для реальной работы потребуется что-то придумывать, дабы завершать не все процессы с именем «mstsc.exe», а только и именно процессы, запущенные данным пакетным файлом.




© OSzone.net 2001-2012