Терминальный сервер (Windows XP, Windows 7 и 8)

Тэги: 

Текст: 

Вопрос "как сэкономить на терминальном сервере?" может показаться при первом рассмотрении весьма глупым. Берем что-нибудь из linux и делаем все не только экономно, но даже и совсем бесплатно.

К сожаленью, все еще существуют производители ПО поддерживающие исключительно Микрософт. Например, распространеннейший бухгалтерский комплекс 1С имеет полноценного "толстого" клиента только под Windows. Тогда берем, например, какую-нибудь Windows Professional правим \windows\system32\termsrv.dll и снимаем ограничение на одновременное подключение нескольких пользователей.

Для XP SP2 меняются байты:

128BB:    74    75
217D3:    33    8B
217D4:    C0    C7
2192D:    33    8B
2192E:    C0    C7
225B7:    20    54
 

Для XP SP3:

22A17:    75    74
22A69:    90    7F
22A6A:    90    16

В реестр вносятся изменения:

HKLM\SYSTEM\ControlSet\Control\Terminal Server\Licensing Core
EnableConcurrentSessions REG_DWORD = 1

HKLM\SOFTWARE\Microsoft\Windows NT\CurrentVersion\Winlogon
AllowMultipleTSSessions REG_DWORD = 1

Со вторым параметром в домене возникает проблема - сбрасывается при загрузке системы. Поэтому нужно принять меры для его восстановления.

Для Windows 7 SP1 32bit байты будут меняться следующим образом:

19153:    B8    3B
19154:    00    86
19155:    01    20
19156:    00    03
19158:    90    00
19159:    89    0F
1915A:    86    84
1915B:    20    FF
1915C:    03    14
1915D:    00    01
1989D:    90    43
655E5:    E9    74
655E6:    2C    2F
655E7:    00    68
655E8:    00    88
655E9:    00    62

64 битная XP была редкостью из-за большого количества криво написанных драйверов и еще большего количества их полного отсутствия. С семеркой в этом плане полный порядок, учитывая 64 битность всего современного аппаратного обеспечения, дешевизну памяти и стабильность ОС ее можно смело рекомендовать на роль терминального сервера.

Байты для Windows 7 SP1 64bit:

17384:    B8    8B
17385:    00    87
17386:    01    38
17387:    00    06
17389:    90    00
1738A:    89    39
1738C:    38    3C
17390:    90    0F
17391:    90    84
17392:    90    5E
17393:    90    C3
17394:    90    00
17395:    90    00
176E2:    00    01
5A8AE:    EB    74

В реестре ничего менять не надо.

Да, чтобы не забыть, первый столбец это изменное состояние, второй - первично-оригинальное.

Но вот появились, в последнее время, такие, про которых и говорить даже не хочется. Но скажу. Так вот они, эти самые, хотят терминальный сервер на Windows и дешево и чтобы все было по лицензии. Обычно на эти наглые выпады предлагю купить Windows Server и называю его цену (+ CAL + RD CAL). Действует безотказно, когда клиент приходит в себя он становится гораздо сговорчивее и про лицензионность уже не заговаривает.

Недавно нашел компромиссный вариант: умеренно дорого (от $50 до $75 за пользователя или устройство), лицензионно и функционально. Называется SysElegance Application Server. Впрочем кто такой мне SysElegance и почему это я буду про него писать? Ведь это бесплатная реклама с моей стороны, да еще и коммерческого продукта. Люди зарабатывают себе деньги, а я их рекламирую - непорядок. Ну раз уж начал и только коротко.

Application Server позволяет совершенно лицензионно превратить машину под управлением Windows XP или 7 в терминальный сервер, даже Home версии. Чтобы все было кошерно, для подключения по протоколу RDP к Windows нам нужны Client Access License (CAL) и Remote Desktop Client Access License (RDCAL).

И XP и 7 (в т.ч. и Home) включают в себя от 5 до 20 CAL, для подключения к ним по сети через SMB протокол. Посмотреть количество CAL для данной копии можно через net config server - параметр Maximum Logged On Users. А как же быть с RDCAL - они в случае SysElegance не нужны. Если терминальный доступ полностью реализован средствами сторонних разработчиков , то в этом случае приобретать данные лицензии не требуется.

Если кто-то пробовал еще какие-то решения просьба не скупится и писать комментарии.

Комментарии

Изменил байты у termsrv.dll

Изменил байты у termsrv.dll версии 6.3.9600.16384 от 2013-08-22
как описал 24 октября, 2013 - 18:32 пользователь Bobr
Original: 3B 81 20 03 00 00 0F 84 40 FC 02 00
Patched: B8 00 01 00 00 90 89 81 20 03 00 00
все заработало.
Было оставлено автоматическое обновление. Винда с того времени накачала обновлений аж 3ГБ!!! Опасался что и пропатченный файл обновится. И вот недавно это произошло. Терминал перестал пускать. Повторил операцию с новым обновленным файлом. Опять все заработало.
Наиважнейшее замечание: Нужно патчить файл не только в папке C:\Windows\System32, но и в c:\Windows\WinSxS\x86_microsoft-windows-t..teconnectionmanager_31bf3856ad364e35_6.3.9600.17095_none_23351a336fe50414\
(папка определяется поиском termsrv.dll)

Патчить не собираюсь, но инфа

Патчить не собираюсь, но инфа крайне полезна, в том числе и реклама коммерческой софтины, она как раз решает одну из задач которую скоро нужно выполнить. Автору огромное спасибо!

На днях поставился какой

На днях поставился какой update и перестал работать TS (Win7 x64 Ultimate)
в новой termsrv.dll нашёл ключевые байты по другим адресам , заменил и работа TS вернулась
1: - адрес из статьи , 2: новый адрес
вариант для Win7 SP1 x64, размер termsrv.dll 681984
1: 17384 2: 1727C
1: 176E2 2: 17606
1: 5A8AE 2: 5AAFE

в новой dll после октябрьских

в новой dll после октябрьских патчей получаюся такие адреса для Win7 SP1 x64:
1727C
1727D
1727E
1727F
17281
17282
17284
17288
17289
1728A
1728B
1728C
1728D
17606
5AAFE
Однако по адресу 1728A значение не 5E у меня, а 2F...

Микрософт не оставляет без

Микрософт не оставляет без работы: установленное автоматически 12.11.2014 обновление Win7 x64 kb3003743 заменили файл termsrv.dll на новый размером 683520 байт. Уязвимость там серьёзная, так что патчить сразу нужно именно его.

для файла размером 683520

для файла размером 683520 (Win7 x64 SP1) я патчил вот так:
Сравнение файлов termsrv.dll.original.w7x64 и TERMSRV.DLL.PATCHED.W7X64
00000140: E3 28
00000141: A1 52
00000142: 0A 0B
000173C0: 8B B8
000173C1: 87 00
000173C2: 38 01
000173C3: 06 00
000173C5: 00 90
000173C6: 39 89
000173C8: 3C 38
000173CC: 0F 90
000173CD: 84 90
000173CE: EB 90
000173CF: C2 90
000173D0: 00 90
000173D1: 00 90
000A6DF9: 00 64
000A6DFA: 00 65
000A6DFB: 00 65
000A6DFC: 00 70
000A6DFD: 00 78
000A6DFE: 00 77

После патча вроде работает

Сделано, все равно не могу

Сделано, все равно не могу сделать несколько сессий под одним пользователем - выбрасывает. Под разными - пожалуйста. Подскажите еще куда покопать? Обновления откатил.
HKEY_LOCAL_MACHINE SYSTEM\CurrentControlSet\Control\Terminal

Server fDenyTSConnections (dword) = 0

fSingleSessionPerUser (dword) = 0

Для Windows 10 Insider

Для Windows 10 Insider Preview пока аналогично Windows 8.1:
для x64:
termsrv.dll

Original: 8B 81 38 06 00 00 39 81 3C 06 00 00 0F 84 ?? ?? ?? ??

Patched: B8 00 01 00 00 89 81 38 06 00 00 90 90 90 90 90 90 90

Доброго времени суток!

Доброго времени суток!
Для Windows 10 (x64) аналогично Windows 8.1 не работает. :-((((
Подскажите как переписать termsrv.dll что бы заработало?!
За ранее благодарствую! ;-)

kk - спасибо за ответ. Честно

kk - спасибо за ответ. Честно сказать не знаю что такое трешолд, в инете нашел что вроде как обновление? У меня официальная версия Win 10 Pro х64, устанавливал как обновление на Win 8.1. разумеется регулярно обновляется, т.к в 10-ке иного не предусмотрено. Я так понимаю что у меня на сегодняшний день стоит Threshold2 (вышло 2.11.15), но может ошибаюсь.
В общем дело в том,что у меня нет такой последовательности
39 81 3C 06 00 00 0F 84 73 42 02 00
Искал с помощью "HxD" редактора.
На всякий случай, мой файл находится здесь: https://yadi.sk/d/xORkrS6BkfGEW
Буду безмерно благодарен за помощь!

Страницы

Добавить комментарий.

Filtered HTML

  • Адреса страниц и электронной почты автоматически преобразуются в ссылки.
  • Доступны HTML теги: <a> <em> <strong> <cite> <blockquote> <code> <ul> <ol> <li> <dl> <dt> <dd>
  • Строки и параграфы переносятся автоматически.

Plain text

  • HTML-теги не обрабатываются и показываются как обычный текст
  • Адреса страниц и электронной почты автоматически преобразуются в ссылки.
  • Строки и параграфы переносятся автоматически.
CAPTCHA
Этот вопрос задается для того, чтобы выяснить, являетесь ли Вы человеком или представляете из себя автоматическую спам-рассылку.
CAPTCHA на основе изображений
Введите символы, которые показаны на картинке.