Терминальный сервер (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 не нужны. Если терминальный доступ полностью реализован средствами сторонних разработчиков , то в этом случае приобретать данные лицензии не требуется.
Windows 8 termsrv.dll build 8102, 8250, 8400
HKEY_LOCAL_MACHINE SYSTEM\CurrentControlSet\Control\Terminal
Server fDenyTSConnections (dword) = 0
fSingleSessionPerUser (dword) = 0
32-bit
Original: 3B 86 20 03 00 00 0F 84 ?? ?? ?? ??
Patched: B8 00 01 00 00 90 89 86 20 03 00 00
64-bit
Original: 8B 87 38 06 00 00 39 87 3C 06 00 00 0F 84 ?? ?? ?? ??
Patched: B8 00 01 00 00 89 87 38 06 00 00 90 90 90 90 90 90 90
Windows 8.1 64 bit 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 8.1 32 bit termsrv.dll
Original: 3B 81 20 03 00 00 0F 84 ?? ?? ?? ??
Patched: B8 00 01 00 00 90 89 81 20 03 00 00
Наиважнейшее замечание: Нужно патчить файл не только в папке C:\Windows\System32, но и в c:\Windows\WinSxS\x86_microsoft-windows-t..teconnectionmanager_31bf3856ad364e35_6.3.9600.17095_none_23351a336fe50414\
(папка определяется поиском termsrv.dll)