Показать полную графическую версию : Клиентские лицензии
Tonny_Bennet
05-06-2012, 09:57
Здравствуйте. Все знают, что при работе с терминальным сервером и временными лицензиями через 90 дней на клиентской машине вылезает ошибка лицензирования. И как все знают лечится данная ошибка удалением ветки в реестре:
HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\MSLicensing
Я это делаю скриптом *.bat. Но если эту операцию проделать в Windows 7 то потом нужно от имени администратора запустить программу подключения к удалённому рабочему столу, чтобы эта ветка реестра создалась.
Отсюда вопрос:
Если в планировщик заданий всунуть скрипт по удалению ветки реестра, и указать пользователя от имени которого производится запуск, (пусть это будет администратор) ветка реестра удалится но как быть с запуском подключения к удалённому рабочему столу от имени администратора? Просто запуск mstsc.exe результата не даёт - ветка реестра не создаётся. Я так понимаю, что нужно инициализировать подключение к определённому терминальному серверу, чтобы в реестре прописалась временная лицензия. Как автоматизировать процесс?
Указывайте имя хоста:
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, спасибо. Скрипт интересный. Но вот как быть если компов несколько и указать у какой машины закончился срок временной лицензии нет возможности?
Этот пакетный файл на аварийный случай: уже по факту я просто запускаю его непосредственно из сети (такой запуск возможен:
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 разные сервера лицензирования)
т.е. файл запускается не с "проблемной" машины? »
Нет, его запускают «ручками», по факту случившегося, администраторы для «проблемной» машины — путём указания её имени параметром данного пакетного файла.
Если я удалил ветку реестра и с компа 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
vBulletin v3.6.4, Copyright ©2000-2025, Jelsoft Enterprises Ltd.