Гарант или Консультант+ на терминальном сервере

Опубликовано: 12.03.2015
Автор: Виталий Бочкарев
Поддержать автора статьи по этой ссылке

В компании, в которой я работаю, используется правовая система Гарант (раньше использовалась аналогичная система Консультант+). Так как филиалы компании распределены по всей стране, а сервер с базой данной программы установлен в центральном офисе, то для быстрой работы в системе было принято установить клиент системы Гарант на терминальный сервер, а пользователям передавать экран клиента через удаленное подключение сервера Microsoft RDS 2012.

Для установки клиента на терминальный сервер необходимо подготовить сам сервер:
- установить операцилнную систему Windows Server 2012 Standard,
- установить антивирус на сервер,
- настроить языки и региональные стандарты,
- настроить файрвол,
- установить NetFrameWork 3.5 (требуется для клиента).

В установке NetFrameWork 3.5 на сервер есть небольшая хитрость, так как установщик пакета NetFrameWork 3.5 не запускается на сервере, а версия 3.5 не входит в стандартную установку Windows Server 2012. Для установки NetFrameWork 3.5 необходимо смонтировать ISO операционной системы, например как диск D:, а после этого выполнить команду

dism /online /enable-feature /featurename:NetFX3 /all /Source:D:\sources\sxs /LimitAccess

Когда сервер готов, то можно устанавливать клиент системы Гарант (или Консультант +), в настройках которого указать базу данных своего локального сервера системы Гарант (или Консультант +) - имеется ввиду создание ярлыка на исполняемый файл, расположенный на сервере системы.

Далее, для корректной работы клиента на терминальный сервер нужно настроить браузер, установить почтовый клиент, просмотрщик XLS-файлов и текстовых документов.

В качестве почтового клиента на отправку файлов можно использовать Windows Live Mail, который сконфигурировать на почтовый сервер предприятия. Например, можно настроить всем пользователям отправку писем с общего адреса noreply@mydomain.com, для этого нужно в Logon-скрипт пользователей на терминальном сервере прописать такие строки:

'On Error Resume Next
set oShell = CreateObject("wscript.shell")
oShell.RegWrite "HKCU\Software\Microsoft\Windows Live Mail\Default Mail Account", _
  "account{894DF4D0-E3F4-4EED-9C5B-3A5DC2F8AC4D}.oeaccount","REG_SZ"
oShell.RegWrite "HKCU\Software\Microsoft\Windows Live Mail\Store Root", _
  "%USERPROFILE%\AppData\Local\Microsoft\Windows Live Mail\","REG_EXPAND_SZ"
oShell.RegWrite "HKCU\Software\Microsoft\Windows Live Mail\First Run Done", _
  00000001,"REG_DWORD"
oShell.RegWrite "HKCU\Software\Microsoft\Windows Live Mail\Mail Is Ready", _
  00000001,"REG_DWORD"
oShell.RegWrite "HKCU\Software\Microsoft\Windows Live Mail\Show Replies To My Messages", _
  00000000,"REG_DWORD"
oShell.RegWrite "HKCU\Software\Microsoft\Windows Live Mail\mail\Accounts Checked", _
  00000001,"REG_DWORD"
oShell.RegWrite "HKCU\Software\Microsoft\Windows Live Mail\mail\Check Mail on Startup", _
  00000000,"REG_DWORD"
oShell.RegWrite "HKCU\Software\Microsoft\Windows Live Mail\mail\SaveInSentItems", _
  00000000,"REG_DWORD"
oShell.RegWrite "HKCU\Software\Microsoft\Windows Live Mail\mail\Send Mail Immediately", _
  00000001,"REG_DWORD"
oShell.RegWrite "HKCU\Software\Microsoft\Windows Live Mail\Spelling\SpellEnableInlineSpellcheck", _
  00000000,"REG_DWORD"
oShell.RegWrite "HKCU\Software\Microsoft\Windows Live\Common\TOUVersion", _
  "16.0.0.0","REG_EXPAND_SZ"
oShell.RegWrite "HKCU\Software\Clients\mail\", _
  "Windows Live Mail","REG_EXPAND_SZ"
mScriptFolder = Left(WScript.ScriptFullName, Len(WScript.ScriptFullName) _
  - Len(WScript.ScriptName))
oShell.Run mScriptFolder & "\LiveMailSettings.bat"

Файл LiveMailSettings.bat содержит следующие строки:

md "%localappdata%\Microsoft\Windows Live Mail"
copy "%~DP0account{894DF4D0-E3F4-4EED-9C5B-3A5DC2F8AC4D}.oeaccount" ^
  "%localappdata%\Microsoft\Windows Live Mail\"

Файл профиля account{894DF4D0-E3F4-4EED-9C5B-3A5DC2F8AC4D}.oeaccount можно взять из папки AppData\Microsoft\Windows Live Mail текущего пользователя, предварительно запустив Live Mail и сконфигурировав его на почтовый сервер предприятия в мастере настроек почтового клиента. Подробнее об этом написано в заметке Servers - Почтовый клиент для терминального сервера.

Примечание. Файл профиля account{894DF4D0-E3F4-4EED-9C5B-3A5DC2F8AC4D}.oeaccount на другом сервере будет иметь другой ID. Так же нужно обратить внимание на ключ реестра HKCU\Software\Microsoft\Windows Live\Common\TOUVersion\16.0.0.0, который может иметь другое окончание в зависимости от версии клиента.

В качестве просмотрщика DOC-файлов можно использовать WordPad, который есть в наборе программ сервера.

В качестве просмотрщика XLS-файлов можно использовать Microsoft Office Excel Viewer, который можно скачать с сайта Microsoft.

Для правильной работы браузера терминального сервера можно понизить безопасность Internet Explorer, либо внести необходимые сайты в доверенные узлы следующим logon-скриптом пользователей:

'On Error Resume Next
oShell.RegWrite "HKCU\Software\Microsoft\Windows\CurrentVersion\Internet Settings\ZoneMap\Domains\garant.ru\http", _
  00000002,"REG_DWORD"
oShell.RegWrite "HKCU\Software\Microsoft\Windows\CurrentVersion\Internet Settings\ZoneMap\Domains\service.garant.ru\http", _
  00000002,"REG_DWORD"
oShell.RegWrite "HKCU\Software\Microsoft\Windows\CurrentVersion\Internet Settings\ZoneMap\Domains\gardoc.ru\http", _
  00000002,"REG_DWORD"
oShell.RegWrite "HKCU\Software\Microsoft\Windows\CurrentVersion\Internet Settings\ZoneMap\Domains\garantexpress.ru\http", _
  00000002,"REG_DWORD"
oShell.RegWrite "HKCU\Software\Microsoft\Windows\CurrentVersion\Internet Settings\ZoneMap\EscDomains\garant.ru\http", _
  00000002,"REG_DWORD"
oShell.RegWrite "HKCU\Software\Microsoft\Windows\CurrentVersion\Internet Settings\ZoneMap\EscDomains\service.garant.ru\http", _
  00000002,"REG_DWORD"
oShell.RegWrite "HKCU\Software\Microsoft\Windows\CurrentVersion\Internet Settings\ZoneMap\EscDomains\gardoc.ru\http", _
  00000002,"REG_DWORD"
oShell.RegWrite "HKCU\Software\Microsoft\Windows\CurrentVersion\Internet Settings\ZoneMap\EscDomains\garantexpress.ru\http", _
  00000002,"REG_DWORD"
oShell.RegWrite "HKCU\Software\Microsoft\Windows\CurrentVersion\Internet Settings\ZoneMap\EscDomains\security_F1Shell.run\about", _
  00000002,"REG_DWORD"

Когда клиент системы полностью настроен и протестирован, то его можно публиковать в пуле приложений RDS сервера.

Так как клиент системы гарант не установлен на терминальный сервер, а является всего лишь ярлыком на исполняемый файл основного сервера, то для публикации клиента в RDS портале необходимо создать промежуточный VBS-скрипт Garant.vbs с таким содержимым (для клиента Консультант+ подход аналогичный):

'On Error Resume Next
set oShell = CreateObject("wscript.shell")
Set oFSO = CreateObject("Scripting.FileSystemObject")
sWorkFolder = oShell.ExpandEnvironmentStrings("%APPDATA%") & "\Garant"
If NOT (oFSO.FolderExists(sWorkFolder)) Then
  oFSO.CreateFolder(sWorkFolder)
End If
oShell.CurrentDirectory = sWorkFolder
oShell.Run "\\GarantServer\Garant-Client$\garant.exe"

В папку со скриптом запуска клиента нужно скопировать иконку приложения, например Garant.ico.

Когда все части для публикации готовы, то можно публиковать программу в портале RDS следующей PowerShell командой:

New-RDRemoteApp -CollectionName "RDS Garant" -Alias "Garant" -DisplayName "Гарант" 
  -FilePath "C:\Scripts\Garant\Garant.vbs" -IconPath "C:\Scripts\Garant\Garant.ico" -FolderName "Юристам"

Либо опубликовать программу через остнастку RDS, а иконку установить PowerShell командой:

Set-RDRemoteApp -CollectionName "RDS Garant" -Alias "Garant"
  -IconPath "\\RDSserver.mydomain.com\c$\Scripts\Garant\Garant.ico"