Для настройки терминального сервера Windows Server 2012 перед публикацией его для приема сессий пользователей необходимо настроить рабочий стол сервера, чтобы пользователи не смогли:
- изменить конфигурацию сервера,
- запустить ненужные программы,
- загрузить сервер непрофильными задачами,
- замусорить диск сервера,
- и тому подобное.
Для начала необходимо настроить часовой пояс сервера, например установить Московский часовой пояс (UTC+3:00)

Далее необходимо настроить языки. Обычно я выбираю русский язык как дополнительный, а английский (США) по умолчанию.

Так же я рекомендую выставить дополнительные языковые параметры
- "разный метод ввода для каждого приложения" - то есть поставить галочку "Let me set a different input method for each app window",
- "показывать языковую панель" - то есть поставить галочку "Use the desktop language bar when it's available".

Сочетание клавиш для переключения языка нужно выставить такое же, какое обычно установлено на пользовательских компьютерах. В моем примере это CTRL+SHIFT.

Региональные настройки рекомендуется выставить российские.

Расположение - Россия.

Язык для не-юникодовых программ - Русский.

Когда все региональные параметры установлены, а сервер перезагружен, то необходимо скопировать выставленные параметры для пользователя по умолчанию, чтобы все новые пользователи терминального сервера получали только что сконфигурированные параметры локализации.

Следующим разделом настройки терминального сервера идет настройка групповых политик, которые ограничивают доступ к настройкам сервера со стороны пользователей.
Групповые политики ветки Computer configuration \ Policies \ Administrative templates накладываются на систему, то есть устанавливают настройки для всех пользователей.

Путь | Параметр | Состояние | Значение |
Настройка учетной записи пользователей | |||
Control Panel\User Accounts | Apply the default user logon picture to all users | Enabled | |
Настройка применения политики к пользователям | |||
System\Group Policy | User Group Policy loopback processing mode | Enabled | Replace |
Настройка службы удаленного рабочего стола | |||
Windows Components\Remote Desktop Services\ Remote Desktop Session Host\ Connections |
Restrict Remote Desktop Services users to a single Remote Desktop Services session | Enabled | |
Windows Components\Remote Desktop Services\ Remote Desktop Session Host\ Device and Resource Redirection |
Allow audio and video playback redirection | Disabled | |
Windows Components\Remote Desktop Services\ Remote Desktop Session Host\ Device and Resource Redirection |
Allow audio recording redirection | Disabled | |
Windows Components\Remote Desktop Services\ Remote Desktop Session Host\ Device and Resource Redirection |
Do not allow clipboard redirection | Disabled | |
Windows Components\Remote Desktop Services\ Remote Desktop Session Host\ Device and Resource Redirection |
Do not allow COM port redirection | Disabled | |
Windows Components\Remote Desktop Services\ Remote Desktop Session Host\ Device and Resource Redirection |
Do not allow drive redirection | Enabled | |
Windows Components\Remote Desktop Services\ Remote Desktop Session Host\ Device and Resource Redirection |
Do not allow LPT port redirection | Enabled | |
Windows Components\Remote Desktop Services\ Remote Desktop Session Host\ Device and Resource Redirection |
Do not allow supported Plug and Play device redirection | Enabled | |
Windows Components\Remote Desktop Services\ Remote Desktop Session Host\ Printer Redirection |
Redirect only the default client printer | Enabled | |
Windows Components\Remote Desktop Services\ Remote Desktop Session Host\ Temporary folders |
Do not delete temp folder upon exit | Disabled | |
Windows Components\Remote Desktop Services\ Remote Desktop Session Host\ Temporary folders |
Do not use temporary folders per session | Disabled |
Групповые политики ветки User configuration \ Policies \ Administrative templates накладываются на пользователя, входящего на компьютер, на который наложена данная политика, при условии, что параметр User Group Policy loopback processing mode включен.

Путь | Параметр | Состояние | Значение |
Настройка панели управления | |||
Control Panel | Prohibit access to the Control Panel | Disabled | |
Control Panel | Show only specified Control Panel items | Enabled | Internet Options Language Region Devices and Printers |
Control Panel\Personalization | Prevent changing desktop background | Enabled | |
Control Panel\Personalization | Prevent changing screen saver | Enabled | |
Control Panel\Printers | Prevent addition of printers | Enabled | |
Control Panel\Printers | Prevent deletion of printers | Enabled | |
Настройка рабочего стола | |||
Desktop | Do not add shares of recently opened documents to Network Locations | Enabled | |
Desktop | Hide Network Locations icon on desktop | Enabled | |
Desktop | Prevent adding, dragging, dropping and closing the Taskbar's toolbars | Enabled | |
Desktop | Prohibit adjusting desktop toolbars | Enabled | |
Desktop | Prohibit User from manually redirecting Profile Folders | Enabled | |
Desktop | Remove Properties from the Computer icon context menu | Enabled | |
Desktop | Remove Recycle Bin icon from desktop | Enabled | |
Desktop | Remove the Desktop Cleanup Wizard | Enabled | |
Настрока меню Пуск и Панели задач | |||
Start Menu and Taskbar | Add Logoff to the Start Menu | Enabled | |
Start Menu and Taskbar | Prevent changes to Taskbar and Start Menu Settings | Enabled | |
Start Menu and Taskbar | Prevent grouping of taskbar items | Enabled | |
Start Menu and Taskbar | Remove access to the context menus for the taskbar | Enabled | |
Start Menu and Taskbar | Remove and prevent access to the Shut Down, Restart, Sleep, and Hibernate commands | Enabled | |
Start Menu and Taskbar | Remove Clock from the system notification area | Disabled | |
Start Menu and Taskbar | Remove drag-and-drop and context menus on the Start Menu | Enabled | |
Start Menu and Taskbar | Remove Favorites menu from Start Menu | Enabled | |
Start Menu and Taskbar | Remove Games link from Start Menu | Enabled | |
Start Menu and Taskbar | Remove Help menu from Start Menu | Enabled | |
Start Menu and Taskbar | Remove links and access to Windows Update | Enabled | |
Start Menu and Taskbar | Remove Network Connections from Start Menu | Enabled | |
Start Menu and Taskbar | Remove Recent Items menu from Start Menu | Enabled | |
Start Menu and Taskbar | Remove Run menu from Start Menu | Enabled | |
Start Menu and Taskbar | Remove Search link from Start Menu | Enabled | |
Start Menu and Taskbar | Turn off personalized menus | Enabled | |
Настройка Диспетчера задач | |||
System\Ctrl+Alt+Del Options | Remove Task Manager | Enabled | |
Настройка браузера Internet Explorer | |||
Windows Components\Internet Explorer\ Internet Control Panel |
Disable the Advanced page | Enabled | |
Windows Components\Internet Explorer\ Internet Control Panel |
Disable the Content page | Enabled | |
Windows Components\Internet Explorer\ Internet Control Panel |
Disable the Privacy page | Enabled | |
Windows Components\Internet Explorer\ Internet Control Panel |
Disable the Programs page | Enabled | |
Настройка использования остасток | |||
Windows Components\ Microsoft Management Console\ Restricted/Permitted snap-ins |
Computer Management | Enabled | |
Настройка создания сетевых папок | |||
Windows Components\Network Sharing | Prevent users from sharing files within their profile. | Enabled | |
Настройка службы удаленного рабочего стола | |||
Windows Components\Remote Desktop Services\ Remote Desktop Session Host\Session Time Limits |
Set time limit for active but idle Remote Desktop Services sessions | Enabled | 2 hours |
Windows Components\Remote Desktop Services\ Remote Desktop Session Host\Session Time Limits |
Set time limit for active Remote Desktop Services sessions | Enabled | Never |
Windows Components\Remote Desktop Services\ Remote Desktop Session Host\Session Time Limits |
Set time limit for disconnected sessions | Enabled | 15 minutes |
Windows Components\Remote Desktop Services\ Remote Desktop Session Host\Session Time Limits |
Set time limit for logoff of RemoteApp sessions | Enabled | 5 munutes |
Windows Components\Remote Desktop Services\ Remote Desktop Session Host\Session Time Limits |
Terminate session when time limits are reached | Enabled | |
Настройка Проводника Windows | |||
Windows Components\Windows Explorer | Do not move deleted files to the Recycle Bin | Enabled | |
Windows Components\Windows Explorer | Hide these specified drives in My Computer | Enabled | Restrict all except G, H, I, J, K |
Windows Components\Windows Explorer | Hides the Manage item on the Windows Explorer context menu | Enabled | |
Windows Components\Windows Explorer | No Computers Near Me in Network Locations | Enabled | |
Windows Components\Windows Explorer | No Entire Network in Network Locations | Enabled | |
Windows Components\Windows Explorer | Remove "Map Network Drive" and "Disconnect Network Drive" | Enabled | |
Windows Components\Windows Explorer | Remove Shared Documents from My Computer | Enabled | |
Windows Components\Windows Explorer | Remove Windows Explorer's default context menu | Enabled | |
Windows Components\Windows Explorer | Turn off Windows+X hotkeys | Enabled |
Для того, чтобы ограничения для пользователей не накладывались на администраторов сервера, в настройках безопасности политики необходимо выставить запрет на применение политики для группы администраторов.

Следующим пунктом настройки терминального сервера является создание логон-скриптов для пользователей.

Эти скрипты будут настраивать меню Пуск, Панель задач и вид папок Проводника.

По умолчанию профиль пользователя содержит набор папок Контакты, Загрузки, Видео и т.п. Так как на сервере пользователь не должен пользоваться этими папками, то предлагается скрыть их, установив на них атрибуты "скрытый" и "системный". Для того, чтобы скрыть папки я использую следующий скрипт, который помещен в групповую политику в раздел User configuration \ Policies \ Windows Settings \ Scripts.
Set oShell = CreateObject("WScript.Shell") Set oFSO = CreateObject("Scripting.FileSystemObject") vRootFolder = "C:\Users" vUserName = oShell.ExpandEnvironmentStrings("%USERNAME%") arrSubFolders = Array("AppData", "Contacts", "Downloads", "Favorites", "Links","Music", "Pictures", _ "Saved Games", "Searches", "Videos" ) For i = LBound(arrSubFolders) to UBound(arrSubFolders) vPath = vRootFolder + "\" + vUserName + "\" + arrSubFolders(i) If oFSO.FolderExists(vPath) Then Set objFolder = oFSO.GetFolder(vPath) If ((objFolder.Attributes AND 2) = 0) Then ' Folder is Not Hidden now objFolder.Attributes = objFolder.Attributes + 2 End If If ((objFolder.Attributes AND 4) = 0) Then ' Folder is Not System now objFolder.Attributes = objFolder.Attributes + 4 End If End If Next
В этом скрипте в параметре arrSubFolders нужно указать имена папок, которые нужно скрыть. Так как выставляются сразу 2 параметра: "скрытый" и "системный", то проводник не будет показывать папки, так как по умолчанию в настройках проводника установлен параметр "Скрывать защищенные системные файлы".
В моем примере для пользователя остаются доступными только Рабочий стол и Мои Документы, а остальные папки скрыты от использования, но доступ к ним можно получить, написав полный путь к нужной папке.

Для того, чтобы настроить Панель задач для всех пользователей, нужно сделать шаблонную настройку Панели задач на одном пользователе и скопировать ее остальным. То есть конфигурация Панели задач проводится в несколько этапов:
1. У текущего пользователя создается шаблонная Панель задач, на которой создаются и закрепляются необходимые ярлыки.
2. Экспортируется содержание папки %APPDATA%\Microsoft\Internet Explorer\Quick Launch\User Pinned\TaskBar текущего пользователя.
3. Экспортируется ветка реестра HKCU\Software\Microsoft\Windows\CurrentVersion\Explorer\Taskband текущего пользователя.
4. Логон-скриптом в профиль пользователя копируются ярлыки Панели задач, экспортированные ранее.
5. В групповую политику добавляется экспортированные ранее ключи реестра.
Этот скрипт удаляет ярлыки Панели задач из профиля пользователя и копирует в него шаблонные ярлыки, которые сохранены в подпапке Taskband из папки скрипта.
On error resume next Set oShell = CreateObject("WScript.Shell") ' Source folder mWorkDir = Left(WScript.ScriptFullName,Len(WScript.ScriptFullName)-Len(WScript.ScriptName)) mTaskbandSource = mWorkDir & "Taskband" ' Destination folder mUsersFolder = "C:\Users" mUserName = oShell.ExpandEnvironmentStrings("%USERNAME%") mTaskbarDestination = mUsersFolder & "\" & mUserName & _ "\AppData\Roaming\Microsoft\Internet Explorer\Quick Launch\User Pinned\TaskBar" ' Deleting old files oShell.Run "cmd.exe /C del /S /F /Q """ & mTaskbarDestination & "\*""", 0, True ' Copying new files oShell.Run "cmd.exe /C xcopy.exe """ & mTaskbandSource & """ """ _ & mTaskbarDestination & """ /R /Y /I", 0, True
Эта политика конфигруриует Панель задач, внося в профиль пользователя шаблонные значения реестра. Значения параметров ключей реестра нужно брать из экспортированного ранее файла.

Для того, чтобы настроить меню Пуск для всех пользователей, нужно сделать шаблонную настройку меню Пуск у одного пользователя и скопировать ее остальным. То есть конфигурация меню Пуск проводится в несколько этапов:
1. У текущего пользователя создается шаблонное меню Пуск.
2. Экспортируется файл appsFolder.itemdata-ms из папки %USERPROFILE%\AppData\Local\Microsoft\Windows текущего пользователя.
3. Логон-скриптом в профиль пользователя копируются файл appsFolder.itemdata-ms, экспортированный ранее.
Этот скрипт перезаписывает файл appsFolder.itemdata-ms в профиле пользователя, используя шаблонный файл, который сохранен в подпапке StartScreen из папки скрипта. В этом скрипте используется утилита xcopy.exe, чтобы форсировать перезапись системных файлов и файлов только для чтения.
On error resume next Set oShell = CreateObject("WScript.Shell") ' Source folder mWorkDir = Left(WScript.ScriptFullName,Len(WScript.ScriptFullName)-Len(WScript.ScriptName)) mStartScreenSource = mWorkDir & "StartScreen" ' Destination folder mUsersFolder = "C:\Users" mUserName = oShell.ExpandEnvironmentStrings("%USERNAME%") mStartScreenDestination = mUsersFolder & "\" & mUserName & _ "\AppData\Local\Microsoft\Windows" ' Copying new files oShell.Run "cmd.exe /C xcopy.exe """ & mStartScreenSource & """ """ _ & mStartScreenDestination & """ /R /Y /I", 0, True
Для того, чтобы убрать из проводника ненужные секции Избранное, Библиотеки, Сеть, нужно внести следующие изменения в реестр сервера (для того, чтобы изменить нижеприведенные ключи реестра, нужно дать администратору права на изменение реестра).
Избранное:
[HKEY_CLASSES_ROOT\CLSID\{323CA680-C24D-4099-B94D-446DD2D7249E}\ShellFolder] "Attributes"=DWORD:A9400100
Библиотеки:
[HKEY_CLASSES_ROOT\CLSID\{031E4825-7B94-4dc3-B131-E946B44C8DD5}\ShellFolder] "Attributes"=DWORD:B090010D
Сеть:
[HKEY_CLASSES_ROOT\CLSID\{F02C1A0D-BE21-4350-88B0-7367FC96EF3C}\ShellFolder] "Attributes"=DWORD:B0940064
Другой вариант скрытия ненужных секций проводника - это груповые политики для пользователя (для этих ключей не нужно изменять права доступа к секциям реестра):
Сеть:
[HKEY_CURRENT_USER\SOFTWARE\Microsoft\Windows\CurrentVersion\Policies\NonEnum] "{F02C1A0D-BE21-4350-88B0-7367FC96EF3C}"=DWORD:00000001
Библиотеки:
[HKEY_CURRENT_USER\SOFTWARE\Microsoft\Windows\CurrentVersion\Policies\NonEnum] "{031E4825-7B94-4dc3-B131-E946B44C8DD5}"=DWORD:00000001
Избранное:
[HKEY_CURRENT_USER\SOFTWARE\Microsoft\Windows\CurrentVersion\Policies\NonEnum] "{D34A6CA6-62C2-4C34-8A7C-14709C1AD938}"=DWORD:00000001
Помимо ненужных секций Проводника, рекомендуется так же внести изменения в следующие параметры:
Отключить визуальные эффекты для улучшения быстродействия сервера и быстрой передачи упрощенной графики по сети:
[HKEY_CURRENT_USER\Software\Microsoft\Windows\CurrentVersion\Explorer\VisualEffects] "VisualFXSetting"=DWORD:00000002
Показывать расширения файлов:
[HKEY_CURRENT_USER\Software\Microsoft\Windows\CurrentVersion\Explorer\Advanced] "HideFileExt"=DWORD:00000000
Отображать элементы Панели управления в виде маленьких значков, а не группами:
[HKEY_CURRENT_USER\Software\Microsoft\Windows\CurrentVersion\Explorer\ControlPanel] "AllItemsIconView"=DWORD:00000001 [HKEY_CURRENT_USER\Software\Microsoft\Windows\CurrentVersion\Explorer\ControlPanel] "StartupPage"=DWORD:00000001
Отключить группировку программ на Панели задач:
[HKEY_CURRENT_USER\Software\Microsoft\Windows\CurrentVersion\Explorer\Advanced] "TaskbarGlomLevel"=DWORD:00000001


Для работы с файлами рекомендуется использовать сетевые диски с файлового сервера вместо профиля на терминальном сервере, поэтому рекомендуется подключить сетевые диски через групповую политику.


Последней настрокой рабочего пространства терминального сервера будет установка логотипа компании в качестве значка пользователя.
Для того, чтобы всем пользователям терминального сервера установить логотип компании в качестве значка пользователя, нужно создать 4 файла с логотипом компании со следующими именами и свойствами.
Имя файла | Размер файла |
user.bmp | 448 x 448 |
user.png | 448 x 448 |
user-200.png | 200 x 200 |
user-40.png | 40 x 40 |
Готовые файлы логотипов нужно скопировать на терминальный сервер в папку %ProgramData%\Microsoft\User Account Pictures.
Чтобы установленные картинки применились для учетных записей пользователей, нужно в групповой политике компьютера задать следующий параметр Control Panel\User Accounts\Apply the default user logon picture to all users (этот параметр был сконфигурирован выше по тексту в таблице настроек политик компьютера).
После того, как
- групповая политика создана,
- в ней применены все вышеописанные настройки,
- эта политика наложена на контейнер, где расположен терминальный сервер,
- сервер получил групповую политику и был перезагружен,
можно считать, что задача по настройке рабочего стола сервера Windows Server 2012 для конечных пользователей завершена.
При входе в систему обычного пользователя экран приветствия будет выглядеть следующим образом - будет отображаться логотип компании и информаци о процессе входа в систему.

Меню Пуск для всех пользователей будет стандартно и выглядеть как у шаблонного пользователя. Если пользователь изменит меню Пуск, то при следующем входе на сервер ему скопируется шаблонное меню, и настройки опять будут стандартными.

Панель задач и Проводник так же будут выглядеть одинаково для всех пользователей. А вот Рабочий стол будет индивидуальным для каждого пользователя за исключением файлов, которые расположены в папке %PUBLIC%\Desktop. Файлы и ярлыки из этой папки будут опубликованы для всех пользователей без возможности изменения.

Настройка и тест сервера закончены.
Все заметки о службе терминалов в моем блоге можно найти по тегу RDS.