
Поскольку часто приходится подключаться к удаленным машинам, и нужно, чтобы пользователи продолжали дальше работать на своих компьютерах, стало необходимо сделать так, чтобы одновременные терминальные сессии были возможны для Винды.
Началось, как всегда с гугления, но результаты давали или ЕХЕшник с трояном, или какой-то мудренный способ.
Верю, что где-то в просторах Сети есть таки нужное решение, но почему бы самому не создать
За основу бралась ДЛЛ-ка termsrv.dll версии 5.1.2600.5512. Ее можно скачать где-то из Сети или отсюда.
Кроме этого, надо в реестр запихнуть некие данные, относящиеся к работе службы терминалов. Можно воспользоваться BAT-файлом. Вот его содержимое:
@REG ADD "HKLM\SYSTEM\ControlSet001\Control\Terminal Server\Licensing Core" /v EnableConcurrentSessions /d 1 /t REG_DWORD /f >nul
@REG ADD "HKLM\SOFTWARE\Microsoft\Windows NT\CurrentVersion\Winlogon" /v EnableConcurrentSessions /d 1 /t REG_DWORD /f > nul
@REG ADD "HKLM\SOFTWARE\Microsoft\Windows NT\CurrentVersion\Winlogon" /v AllowMultipleTSSessions /d 1 /t REG_DWORD /f > nul
Кому лень копипастить и создавать файл, готовый батник можно скачать отсюда.
Кстати, если машина в домене, то эти данные в реестр нужно вносить постоянно, так как после перезагрузки они терминальной службой сбрасываются на дефолтные.
Итак, каков порядок действий вручную:
- Грохнуть содержимое папки C:\Windows\Driver Cache\i386
- Грохнуть содержимое папки C:\Windows\Prefetch
- Грохнуть содержимое папки C:\Windows\System32\dllcache
- Убить службу терминалов. (Внимание! После этого служба серверных процессов DComLaunch упадет и появится окошко с обратным отсчетом, что система сейчас перезагрузится). Само убийство: taskkill /F /FI «MODULES eq termsrv.dll»
- Дабы отменить данную перезагрузку, выполним комманду Пуск-Выполнить: shutdown /a
- Теперь после остановки службы терминалов можно спокойно заменять файл termsrv.dll на файл ревизии 5512. Где его брать я написал выше.
- Создать Батник и запустить его (или же другим способом изменить значения в реестре).
- Перезагрузится. Придется, ибо службу терминалов-то удастся запустить, а вот DComLaunch — нет. Незря после ее падения в стоит триггер перезагрузки.
Вот и все. Осталось это автоматизировать. Вы можете это сделать, например, vbs-скриптом, я же на
В архиве — исходники и скомпилированнй проект. termsrv.dll и батник встроены уже в ЕХЕшник и сами оттуда вытягиваются. В vb-проекте они содержатся в файле ресурсов (.RES). Впрочем, думаю, там каждому будет все понятно, тем более кода там немного.
Все, что нужно — запустить ЕХЕшник, перезагружаетесь сами (или ждете, пока система вас вырубит сама через 60 секунд).
Загружаете операционку и — вуаля — терминальный сервер под управлением Windows XP готов!
ЕХЕшник копирует себя в папку %SYSTEMROOT% и ставит себя в автозагрузку, чтобы каждый раз менять те три параметра в реестре. Впрочем, можно вполне обойтись и без этого, но вы должны тогда придумать свой вариант, например, скрипт с невидимым окном.
И вообще, решений может быть просто туча. Я делал для себя, желая, чтобы моя работа не мешала другим пользователям и наоборот.
Посчитал, что кому-то это может пригодится и сэкономить хоть немного времени. Надеюсь, так и будет.
upd. Внимание! Поскольку эти действия можно расценить, как нелегальные, данный пост считать экспериментом и использовать только ради личного обучения. После того, как ваш эксперимент удался — настоятельно рекоммендую вернуть забэкапленную dll-ку обратно в %systemroot%\system32\.
upd2. Меня спрашивали в личку о том, как быть с Windows Home версией. Отвечаю сюда, если кого-то еще такой вопрос интересует.
Очень даже легко. Кстати, Windows XP Home можно «конвертировать» в Windows Xp Pro (и не только в про) без переустановки оной. Да-да. Это нам и нужно для того, чтобы активировать возможность, о которой Вы спрашиваете. Так вот, приступим:
- Откываем редактор реестра (regedit).
- Идем в ветку HKEY_LOCAL_MACHINE/SYSTEM/ControlSet00X/Control/ProductOptions, гдее ControlSet00X — наибольший номер.
- Удаляем ключ ProductSuite.
- Создаем новое свойство DWORD и даем ему имя Brand.
- Задаем нашему «Brand» значение 0.
- Перезагружаемся.
- При загрузке сразу после экрана BIOS, жмем F8 для отображения загрузочного меню Windows XP.
- Выбираем «Последнюю удачную конфигурацию» (Last Known Good Configuration) и жмем ЕНТЕР.
- Радуемся.
upd3.
sacred1972
И в ветке реестра
HKLM\SYSTEM\CurrentControlSet\Services\TermService\Parameters
установить ключ
ServiceDll="%SystemRoot%\System32\termserv.full.dll"
Загрузились? Отлично. Теперь идем в свойства системы и проверям, Pro версия это или нет. Должна быть Windows XP Professional.
Дальше, качаем утититу с мелкософта с именем devcon
Эта утилита — самораспакуется, укажите c:\temp
После распаковки Вы увидите две папки: i386 и ia64.
Запустите коммандную оболочку (Cmd) и перейдите в папку i386:
cd c:\temp\i386
Ну что, давайте уже скорее инсталируем драйвер RDP?
devcon.exe -r install %windir%\inf\machine.inf root\rdpdr
После этого не забудем перезапустить компьютер.
После перезагрузки Вы будете иметь Службу Терминалов, но она не будет работать, пока Вы не измените несколько ключей в реестре. Создадим BAT-файл:
@echo off
echo Windows Registry Editor Version 5.00> C:\TSXP.reg
echo [HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\Services\TermService]>> C:\TSXP.reg
echo "Start"=dword:00000002>> C:\TSXP.reg
echo [HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\Control\Terminal Server]>> C:\TSXP.reg
echo "AllowTSConnections"=dword:00000001>> C:\TSXP.reg
echo [HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\Control\Terminal Server]>> C:\TSXP.reg
echo "fDenyTSConnections"=dword:00000000>> c:\TSXP.reg
echo [HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\Control\Terminal Server]>> C:\TSXP.reg
echo "fAllowToGetHelp"=dword:00000001>> C:\TSXP.reg
echo [HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\Windows NT\CurrentVersion\Winlogon]>> C:\TSXP.reg
echo "AllowMultipleTSSessions"=dword:00000001>> C:\TSXP.reg
echo [HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\Windows NT\CurrentVersion\Winlogon]>> C:\TSXP.reg
echo "AutoAdminLogon"="1">> C:\TSXP.reg
%windir%\regedit.exe /S C:\TSXP.reg
echo [Components] > c:\bootlog~.txt
echo TSEnabled = on >> c:\bootlog~.txt
sysocmgr /i:%windir%\inf\sysoc.inf /u:c:\bootlog~.txt /q
DEL /Q C:\TSXP.reg
DEL /Q C:\bootlog~.txt
exit
Сохраняем и запускаем. Снова перезапускаемся.
После перезагрузки Ваш компьютер уже может принимать входящие подключения через службу терминалов.
Чтобы убедиться, что служба запущениа, запускаем апплет в панели управления Администрирование-Службы. Ищем Службу терминалов (Terminal Server) — должно быть состояние «Работает» и тип запуска «Авто».
Кроме того, Вы можете разрешить несколько подключений к этой машине, проделав все то, что написано выше в основном тексте статьи. Если нужно, то можно дописать в код VB-проекта и этот патч-конвертер Home2Pro :)
Все!
ps. Да, и не забывайте о лицензионном соглашении!