Запуск программы как службы windows server 2016

Однажды вы задумаетесь, как превратить скрипт или приложение в Windows-службу. Скорее всего, задача окажется не такой уж тривиальной – приложению как минимум по...

Однажды вы задумаетесь, как превратить скрипт или приложение в Windows-службу. Скорее всего, задача окажется не такой уж тривиальной – приложению как минимум потребуется специальный интерфейс для получения команд от системы. А раз есть требования и ограничения, то есть и скрипты, и милые сердцу костылики для преодоления.

Статья будет полезна тем, кто, как и я — «программист не настоящий».

Зачем нужна служба, если есть назначенные задания

В отличие от назначенных заданий служба работает постоянно, запускается при старте ПК и может управляться средствами Windows. А еще регулярно запускаемому скрипту могут понадобиться данные с предыдущего запуска, и может быть полезно получение данных из внешних источников — например, в случае TCP или Web сервера.

Лично мне за последние пять лет приходилось создавать службу три с половиной раза:

  • Потребовалось создать сервис на fail2ban для Windows 2003., который работал с логами FileZilla и Apache, а при подозрении на брутфорс блокировал IP штатными средствами Windows — ipsec.
  • Аналог телнет-сервера для домашних версий Windows. Понадобилось выполнять команды на удаленных рабочих станциях, которые были под управлением Windows 7 Home. По сути, вторая попытка поиграть в службы.
  • Музыкальный проигрыватель для торгового зала под Windows. Задачу по ТЗ можно было решить при помощи mpd и пачки скриптов, но я решил — если уж делать скрипты, то почему бы и не «сваять» проигрыватель самому. За основу взял библиотеку BASS.dll.
  • Когда выбирали веб-сервер с поддержкой загрузки файлов под Windows, одним из вариантов был HFS. Сам по себе работать он не может, поэтому пришлось «запихивать» его в службу. В результате решение не понравилось, и просто установили «тему» Apaxy на web-сервере Apache.

Для создания службы можно использовать взрослые языки программирования вроде C. Но если вы не хотите связываться с Visual Studio, то возьмите готовые утилиты. Существуют платные решения вроде FireDaemon Pro или AlwaysUp, но мы традиционно сосредоточимся на бесплатных.

Способ первый. От Microsoft

Этот уже немолодой механизм состоит из двух компонентов: утилиты instsrv.exe для установки сервиса и srvany.exe — процесса для запуска любых исполняемых файлов. Предположим, что мы создали веб-сервер на PowerShell при помощи модуля Polaris. Скрипт будет предельно прост:

New-PolarisGetRoute -Path '/helloworld' -Scriptblock {
    $Response.Send('Hello World!')
}

Start-Polaris -Port 8080

while($true) {
    Start-Sleep -Milliseconds 10
}


Работа так называемого «сервера».

Теперь попробуем превратить скрипт в службу. Для этого скачаем Windows Resource Kit Tools, где будут наши утилиты. Начнем с того, что установим пустой сервис командой:

instsrv WebServ C:temprktoolssrvany.exe

Где WebServ — имя нашего нового сервиса. При необходимости через оснастку services.msc можно задать пользователя, под которым будет запускаться служба, и разрешить взаимодействие с рабочим столом.

Теперь пропишем путь к нашему скрипту при помощи магии реестра. Параметры службы есть в разделе реестра HKLMSYSTEMCurrentControlSetServicesWebServ. В нем нам нужно добавить новый раздел Parameters и создать там строковый параметр Application, указав в нем путь к исполняемому файлу. В случае скрипта PowerShell он будет выглядеть так:

C:WindowsSystem32WindowsPowerShellv1.0powershell.exe -ExecutionPolicy Bypass -NoProfile -File C:tempPolarisserver.ps1


Настроенная служба.

Можно запустить и радоваться.


Работающая служба.

Однако у этого способа есть недостатки:

  • Утилиты старые, разработаны до изобретения PowerShell, UAC и прочих вещей.
  • Srvany не контролирует работу приложения. Даже если оно выпадет в ошибку, служба продолжит свое дело как ни в чем не бывало.
  • Придется донастраивать и копаться в реестре. Вы же помните, что копаться в реестре небезопасно?

Поэтому перейдем к методу, частично лишенному этих проблем.

Способ второй, почти взрослый

Существует утилита под названием NSSM — Non-Sucking Service Manager, что можно перевести как не-плохой менеджер служб. В отличие от предыдущей, она поддерживается разработчиком, и исходный код опубликован на сайте. Помимо обычного способа, доступна и установка через пакетный менеджер Chocolately.

Создать сервис можно из обычной командной строки, вооружившись документацией на сайте разработчика. Но мы воспользуемся PowerShell. Потому что можем, разумеется.

$nssm = (Get-Command ./nssm).Source
$serviceName = 'WebServ'
$powershell = (Get-Command powershell).Source
$scriptPath = 'C:tempPolarisserver.ps1'
$arguments = '-ExecutionPolicy Bypass -NoProfile -File "{0}"' -f $scriptPath
& $nssm install $serviceName $powershell $arguments
& $nssm status $serviceName
Start-Service $serviceName
Get-Service $serviceName


Установка через PowerShell.

Для разнообразия проверим работу службы не браузером, а тоже через PowerShell командой Invoke-RestMethod.


И вправду работает.

В отличие от srvany, этот метод позволяет перезапускать приложение на старте, перенаправлять stdin и stdout и многое другое. В частности, если не хочется писать команды в командную строку, то достаточно запустить GUI и ввести необходимые параметры через удобный интерфейс.

GUI запускается командой:

nssm.exe install ServiceName


Настроить можно даже приоритет и использование ядер процессора.

Действительно, возможностей куда больше, чем у srvany и ряда других аналогов. Из минусов бросается в глаза недостаточный контроль над всем процессом.

Налицо нехватка «жести». Поэтому я перейду к самому хардкорному методу из всех опробованных.

Способ третий. AutoIT

Поскольку я давний любитель этого скриптового языка, то не смог пройти мимо библиотеки под названием _Services_UDF v4. Она снабжена богатой документацией и примерами, поэтому под спойлером сразу приведу полный текст получившегося скрипта.

Листинг скрипта

Итак, попробуем «завернуть» в нее наш веб-сервис:

#NoTrayIcon
#RequireAdmin
#Region
#AutoIt3Wrapper_Version=Beta
#AutoIt3Wrapper_UseUpx=n
#AutoIt3Wrapper_Compile_Both=y
#AutoIt3Wrapper_UseX64=y
#EndRegion

Dim $MainLog = @ScriptDir & "test_service.log"

#include <services.au3>
#include <WindowsConstants.au3>

$sServiceName="WebServ"

If $cmdline[0] > 0 Then
    Switch $cmdline[1]
        Case "install", "-i", "/i"
            InstallService()
        Case "remove", "-u", "/u", "uninstall"
            RemoveService()
        Case Else
            ConsoleWrite(" - - - Help - - - " & @CRLF)
            ConsoleWrite("params : " & @CRLF)
            ConsoleWrite(" -i : install service" & @CRLF)
            ConsoleWrite(" -u : remove service" & @CRLF)
            ConsoleWrite(" - - - - - - - - " & @CRLF)
            Exit
    EndSwitch
Else
    _Service_init($sServiceName)
    Exit
EndIf

Func _main($iArg, $sArgs)
If Not _Service_ReportStatus($SERVICE_RUNNING, $NO_ERROR, 0) Then
    _Service_ReportStatus($SERVICE_STOPPED, _WinAPI_GetLastError(), 0)
    Exit
EndIf

$bServiceRunning = True
$PID=Run("C:WindowsSystem32WindowsPowerShellv1.0powershell.exe -ExecutionPolicy Bypass -NoProfile -File C:tempPolarisserver.ps1")

While $bServiceRunning
_sleep(1000)
WEnd
ProcessClose($PID)

_Service_ReportStatus($SERVICE_STOP_PENDING, $NO_ERROR, 1000)
DllCallbackFree($tServiceMain)
DllCallbackFree($tServiceCtrl)
_Service_ReportStatus($SERVICE_STOPPED, $NO_ERROR, 0)
DllClose($hAdvapi32_DLL)
DllClose($hKernel32_DLL)
EndFunc

Func _Sleep($delay)
Local $result = DllCall($hKernel32_DLL, "none", "Sleep", "dword", $delay)
EndFunc

Func InstallService()
    #RequireAdmin
    Local $bDebug = True
    If $cmdline[0] > 1 Then
        $sServiceName = $cmdline[2]
    EndIf
    If $bDebug Then ConsoleWrite("InstallService("&$sServiceName &"): Installing service, please wait")
    _Service_Create($sServiceName, $sServiceName, $SERVICE_WIN32_OWN_PROCESS, $SERVICE_AUTO_START, $SERVICE_ERROR_SEVERE, '"' & @ScriptFullPath & '"');,"",False,"","NT AUTHORITYNetworkService")
    If @error Then
        Msgbox("","","InstallService(): Problem installing service, Error number is " & @error & @CRLF & " message : " & _WinAPI_GetLastErrorMessage())
    Else
        If $bDebug Then ConsoleWrite("InstallService(): Installation of service successful")
    EndIf
    Exit
EndFunc

Func RemoveService()
    _Service_Stop($sServiceName)
    _Service_Delete($sServiceName)
    If Not @error Then
    EndIf
    Exit
EndFunc

Func _exit()
    _Service_ReportStatus($SERVICE_STOPPED, $NO_ERROR, 0);
EndFunc

Func StopTimer()
    _Service_ReportStatus($SERVICE_STOP_PENDING, $NO_ERROR, $iServiceCounter)
    $iServiceCounter += -100
EndFunc

Func _Stopping()
    _Service_ReportStatus($SERVICE_STOP_PENDING, $NO_ERROR, 3000)
 EndFunc

Разберу подробнее момент запуска приложения. Он начинается после операции $bServiceRunning = True и превращается в, казалось бы, бесконечный цикл. На самом деле этот процесс прервется, как только служба получит сигнал о завершении — будь то выход из системы или остановка вручную.

Поскольку программа для скрипта является внешней (powershell.exe), то после выхода из цикла нам нужно закончить ее работу с помощью ProcessClose.

Для этого скрипт необходимо скомпилировать в .exe, а затем установить службу, запустив exe с ключом -i.


Оно работает!

Разумеется, этот способ не самый удобный, и все дополнительные возможности придется реализовывать самостоятельно, будь то повторный запуск приложения при сбое или ротация логов. Но зато он дает полный контроль над происходящим. Да и сделать в итоге можно куда больше — от уведомления в Telegram о сбое службы до IPC-взаимодействия с другими программами. И вдобавок — на скриптовом языке, без установки и изучения Visual Studio.

Расскажите, а вам приходилось превращать скрипты и приложения в службы?


Windows, Программное обеспечение

  • 06.01.2020
  • 31 788
  • 6
  • 27.07.2020
  • 53
  • 53
  • 0

Запуск приложения как службы Windows

  • Содержание статьи
    • SC
    • NSSM
    • Комментарии к статье ( 6 шт )
    • Добавить комментарий

Службы Windows — запущенные в фоне приложения, которые работают независимо от пользователя компьютера, и управляются непосредственно самой операционной системой. По умолчанию, службами являются строго определенные приложения, однако, ничто не мешает пользователю создать их самому. Выполнить данную задачу можно несколькими способами — с использованием стандартных средств Windows, либо с использованием сторонней программы NSSM.

SC

Входящая в Windows программа SC позволяет легко создавать службы Windows, а так же проводить другие различные с ними манипуляции — удаление, отключение, включение, и т. д. Создается служба достаточно просто, для этого достаточно запустить командную строку от имени администратора, и выполнить там следующую команду:

sc create [ИМЯ СЛУЖБЫ] binPath=[ПУТЬ К ИСПОЛНЯЕМОМУ ФАЙЛУ] DisplayName=[ОТОБРАЖАЕМОЕ ИМЯ СЛУЖБЫ] type=own start=auto

Удаляется же служба еще проще:

sc delete [ИМЯ СЛУЖБЫ]

Однако, у данного метода есть один большой существенный недостаток — с помощью данной утилиты создать службу можно только из программы, которая поддерживает работу службой. По этому, запустить какое попало приложение как службу данным способом не получится — но, можно воспользоваться сторонней утилитой NSSM, о которой речь пойдет ниже.

NSSM

NSSM — программа, предназначенная для создания служб из исполняемых файлов Windows, в том числе и из графических утилит, что ставит её на уровень выше средств от Microsoft. С её помощью можно запускать большинство приложений, даже которые рассчитаны на взаимодействие с пользователем.

Скачать данную программу можно с её официального сайта — nssm.cc.
На случай проблем с официальным сайтом, можно скачать программу с нашего сайта.

Скачать NSSM 2.24

В архиве для скачивания можно найти версию для 64-битной версии Windows (папка win64), для 32-битной (папка win32) и исходные коды приложения (папка src). Выбираем нужное приложение под разрядность своей системы, копируем его в удобное для вас место на жестком диске. Никакая установка приложения не требуется.

Пример использования:

  1. Предположим, нужно создать службу для веб-сервера nginx под Windows. Для этого, запускаем командную строку с правами администратора, и переходим в директорию с распакованным исполняемым файлом nssm.exe.
  2. Затем выполняем команду, начинающую установку службы:
    nssm install nginx
  3. Откроется окно с настройками создаваемой службы.

    На самой первой вкладке «Application«, в строке «Path» задается путь к исполняемому файлу, «Startup Directory» — рабочая директория, а «Arguments» — параметры запуска. В самом низу расположена строка «Service Name«, где задается имя создаваемого сервиса.

    На вкладке «Details» можно задать имя, под которым будет отображаться создаваемая служба в списке служб, а так же описание службы, которое будет отображаться там же. В выпадающем списке «Startup Type» можно выбрать тип запуска службы.

    Вкладка «Log on» позволяет указать пользователя, под которым будет запускаться служба.Заполним все нужные поля и выбрав нужные настройки, остается только нажать кнопку «Install service«, для установки службы.
  4. После нажатия кнопки «Install service«, служба будет создана, но при этом запустить её нужно будет вручную (либо перезагрузить компьютер, чтобы служба с параметром запуска «Auto» запустилась при его запуске).

Так же удалить службу можно с помощью команды в командной строке:

nssm remove [ИМЯ СЛУЖБЫ] confirm

Можно ли запустить клиентское приложение в качестве службы? В одной из статей я описывал способы создания службы Windows штатными средствами ОС. Однако не каждое консольное приложение сможет запуститься как служба, а программы с графическим интерфейсом в принципе не умеют работать подобным образом. Но возможность запустить приложение как службу все же есть, и поможет нам в этом программа с оригинальным названием Non-Sucking Service Manager.

NSSM представляет из себя свободное программное обеспечение с открытым кодом и поддерживает все операционные системы Microsoft, начиная с Windows 2000 и заканчивая Windows 8. NSSM не требует установки, достаточно его загрузить и распаковать. В дистрибутив входят версии для 32- и 64-разрядных ОС. Взять программу можно с сайта nssm.cc, на данный момент последняя стабильная версия 2.21.1, которую я и буду использовать.

Для демонстрации возможностей NSSM попробуем запустить Блокнот Windows в качестве службы на Windows 8.1.

Создание службы

Для создания службы с именем notepad запускаем командную консоль, переходим в папку с распакованным NSSM (для 64-разрядной Windows) и вводим команду nssm install notepad, которая открывает окно графического инсталлятора NSSM. Чтобы создать службу, достаточно в поле Path указать путь к исполняемому файлу и нажать кнопку «Install service». Дополнительно в поле Options можно указать ключи, необходимые  для запуска службы.

запуск NSSM

Также на этапе создания новой службы можно указать некоторые дополнительные параметры.

На вкладке «Shutdown» перечислены методы остановки и таймауты, используемые при штатном завершении работы или аварийной остановке приложения. Когда NSSM получает команду остановки (напр. при завершении работы приложения), то он пытается остановить контролируемое приложение штатным образом. Если же приложение не отвечает, то NSSM может принудительно завершить все процессы и подпроцессы этого приложения.

Всего есть четыре этапа завершения работы приложения, и по умолчанию они будет использоваться в таком порядке:

• На первом этапе NSSM пытается сгенерировать и отправить событие Ctrl+C. Этот способ хорошо работает для консольных приложений или скриптов, но не применим для графических приложений;
• Затем NSSM определяет все окна, созданные приложением, и посылает им сообщение WM_CLOSE, инициирующее выход из приложения;
• Третьим этапом NSSM вычисляет все потоки, созданные приложением, и отправляет им сообщение WM_QUIT, которое будет получено если приложение имеет очередь сообщений потока;
• И в качестве последнего средства NSSM может вызвать метод TerminateProcess(), принудительно завершив работу приложения.

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

настройки выключения службы в NSSM

По умолчанию при падении службы NSSM пытается рестартовать ее. На вкладке «Exit actions» можно изменить автоматическое действие при нештатном завершении работы приложения, а также выставить задержку перед автоматическим перезапуском приложения.

настройки выхода для службы в NSSM

На вкладке «Input/Output (I/O)» можно задать перенаправление вводавывода приложения в указанный файл.

вкладка I/O в NSSM

На вкладке «Environment» можно задать для службы новые переменные окружения, или переопределить существующие.

вкладка Environment в NSSM

Также можно не пользоваться графической оболочкой и сразу создать службу в консоли такой командой:

nssm install notepad ″C:Windowssystem32notepad.exe″

Управление службой

После создания службы с помощью NSSM зайдем в оснастку Services и найдем службу notepad. Как видите, с виду она ничем не отличается от остальных служб, мы также можем ее запустить, остановить или изменить режим запуска. Однако обратите внимание, что в качестве исполняемого файла указан nssm.exe.

свойства службы

А если зайти в Task Manager, то мы увидим следующую картину: в качестве основного (родительского) процесса запущен NSSM, служба notepad запущена как его дочерний процесс, и уже в этом дочернем процессе запущено приложение Блокнот.

служба NSSM в диспетчере задач

Удаление службы

Для удаления службы вводим команду nssm remove notepad и подтверждаем ее удаление. А введя команду nssm remove notepad confirm, можно обойтись и без подтверждения.

удаление службы в NSSM

Запуск службы в интерактивном режиме

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

Для того, чтобы запустить службу в интерактивном режиме, надо в оснастке Службы открыть ее свойства и на вкладке «Вход в систему» отметить чекбокс «Разрешить взаимодействие с рабочим столом».

разрешаем службе взаимодействие с рабочим столом

А дальше начинаются чудеса 🙂 Cлужба, запущенная в интерактивном режиме, открывается в изолированном сеансе (session 0). Попасть в этот сеанс можно только при помощи Службы обнаружения интерактивных служб (ui0detect), которая отслеживает запуск интерактивных служб на компьютере и выдает оповещение. В Windows 7Server 2008 эта служба активна по умолчанию, а в Windows 8Server 2012 она отключена и не отображается в графической оснастке Службы (по крайней мере я ее там не нашел). Более того,  если вы все же найдете эту таинственную службу и попробуете ее запустить, то получите сообщение об ошибке.

А дело в том, что для ее запуска необходимо разрешить запуск интерактивных служб на компьютере. Поэтому открываем редактор реестра, находим в разделе HKLMSystemCurrentControlSetControlWindows параметр типа DWORD с именем NoInteractiveServices и ставим его значение в 0.

разрешаем запуск интерактивных служб

После чего открываем консоль PowerShell и стартуем службу обнаружения командой:

Start-Service -Name ui0detect

включаем службу обнаружения

Убедившись что служба обнаружения запущена, рестартуем службу notepad, и получаем вот такое окошко. Выбираем пункт «Посмотреть сообщение»

окно обнаружения запуска интерактивной службы

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

нулевой сеанс

Такое вот интересное решение для запуска приложений в виде служб Windows. Не самое красивое, но вполне соответствующее своему названию 🙂

Обновлено 19.08.2021

Windows logo

Добрый день! Уважаемые читатели и гости крупнейшего IT блога рунета pyatilistnik.org. Вчера ко мне обратился сотрудник из отдела разработки, и попросил посмотреть их сервер с приложением. Приложение Trassir (Видео сервер) корректно не запускалось, со слов технической поддержки, у нас на сервере был конфликт двух версий 3-й и 4-ой, который запускались одновременно в автозагрузке Windows Server 2012 R2. Меня попросили из нее убрать запуск третьей версии, но вот не задача такого окна автозагрузки как в Windows 10, в серверной версии нет, вы увидите там формулировку «В этой системе элементы автозагрузки недоступны«. Давайте я вам покажу, где лежат файлы запускаемые при старте сервера и как туда добавить нужное или убрать не используемое. Сегодня речь пойдет, о автозагрузке в Windows Server 2012 R2, актуально и для 2016 и выше.

Для чего нужна автозагрузка

Логично сделать вывод, что это процесс, который в момент загрузки операционной системы, запускает необходимые утилиты и процессы. Простой пример, когда вы установили Windows Server 2012 R2, то при первом входе у вас откроется «Диспетчер сервера», так как он находится в автозапуске в системе, чтобы пользователь мог с ним познакомиться.

К сожалению Windows Server 2012 R2 не имеет такой вкладки «Автозагрузка», как у клиентских ОС Windows 8.1 и 10.

Автозагрузка в Windows Server 2012 R2-01

Попробуем зайти в конфигурацию системы и открыть там вкладку «Автозагрузка», делается это через msconfig в окне «Выполнить», вы обнаружите там, что «В этой системе элементы автозагрузки недоступны»

В этой системе элементы автозагрузки недоступны

Так как в msconfig отсутствует нужная нам функциональность, то мы пойдем другим путем. Включите отображение скрытых элементов Windows и перейдите вот по такому пути:

C:ProgramDataMicrosoftWindowsStart MenuProgramsStartUp

У вас откроется папка, в которой будут лежать ярлыки программ запускающихся при загрузке сервера, в моем примере, это «Автозапуск Trassir 4 Server».

Автозагрузка в Windows Server 2012 R2-02
Данный путь будет работать для всех пользователей, зашедших на сервер. Если нужно реализовать автозапуск утилит или процессов, для конкретного пользователя, то нужно положить необходимый ярлык по такому пути:

C:Usersпрофиль пользователяAppDataRoamingMicrosoftWindowsStart MenuProgramsStartup

Альтернативный метод задать автозапуск нужных программ для конкретного пользователя, это в окне «Выполнить» вбить команду:

добавление программы в автозагрузку windows server

Можете тут смело производить добавление программы в автозагрузку Windows Server.

Настройка автозагрузки через реестр Windows

Настроить автозагрузку в операционных системах семейства Windows Server 2012 R2 и выше, можно, через реестр. Для этого перейдите в ветку:

HKEY_LOCAL_MACHINESOFTWAREWow6432Node MicrosoftWindowsCurrentVersionRun

Автозагрузка в Windows Server через реестр

У вас тут будет список программ, которые запускаются для конкретного пользователя. Если вам нужно, что-то добавить в автозапуск, то создайте новый строковый ключ (REG_SZ). Задайте любое имя ключа реестра и укажите путь до исполняемого файла.

Ключ реестра автозагрузки в Windows Server 2012

Управление автозагрузкой Windows Server 2012 R2 через Ccleaner

Я вам уже много раз рассказывал, об этой полезной утилите. Она позволяет не только производить очистку вашего компьютера или сервера, но и управляет автозапуском. Для этого зайдите в раздел «Сервис — Автозагрузка». Тут будет представлен список ваших программ, стартующих при подключении к серверу.

Управление автозагрузкой Windows Server 2012 через ccleaner

Чтобы, что-то отключить, то выберите нужный пункт и нажмите кнопку «Выключить». Обратите внимание, что тут же вы можете изменять пункты контекстного меню (Правый клик), вы можете исключить лишние пункты.

Настройка контекстного меню Windows Server 2012 r2

Управление автозагрузкой в Autoruns Sysinternals

Есть такой набор утилит от компании Microsoft под названием Sysinternals. В нем есть утилита autoruns.exe. Это специализированная утилита для управления автозагрузкой всего, что только можно в операционной системе Windows.

Вот так вот выглядит общее окно со всем, что только загружается в вашей Windows Server. Вы тут можете обнаружить:

  • Ключи реестра
  • Процессы и утилиты
  • Библиотеки
  • Драйвера
  • Кодаки

Управление автозагрузкой в Autoruns Sysinternals-01

Для примера. я хочу, чтобы служба обновления Google Chrome у меня не запускалась, открываем вкладку «Services» и снимаем галки с нужных служб, тем самым вы отключаете автоматическую загрузку.

Управление автозагрузкой в Autoruns Sysinternals-02
Теперь посмотрите вкладку «Logon», в ней будут перечислены процессы запускающиеся при входе в систему, все что вам не нужно отключите.

Управление автозагрузкой в Autoruns Sysinternals-03

Таких утилит на самом деле очень много, но лично мне для управления автозагрузкой этого более, чем достаточно. Уверен, что теперь автозапуск программ в Windows Server 2012 R2-2016-2019 у вас по колпаком. Остались вопросы, пишите их в комментариях. Материал сайта pyatilistnik.org.

Для чего нужна автозагрузка

логично сделать вывод, что это процесс, который при загрузке операционной системы запускает необходимые утилиты и процессы. Простой пример: когда вы установили Windows Server 2012 R2, при первом входе в систему вам будет представлен «Диспетчер серверов», поскольку он автоматически запускается в системе, чтобы пользователь мог с ним ознакомиться.

К сожалению, в Windows Server 2012 R2 нет такой же вкладки «Автозагрузка», как в клиентских операционных системах Windows 8.1 и 10.

Загрузитесь в Windows Server 2012 R2-01

Попробуем зайти в конфигурацию системы и открыть там вкладку «Автозагрузка», это делается через msconfig в окне «Выполнить», там вы обнаружите, что «Элементы автозагрузки недоступны в этой системе”

Элементы автозагрузки недоступны в этой системе

Поскольку в msconfig нет нужных нам функций, мы пойдем другим путем. Включите отображение скрытых элементов Windows и пройдите по этому пути:

C: ProgramData Microsoft Windows Меню Пуск Программы Пуск

Это откроет папку, содержащую ярлыки для программ, которые запускаются при запуске сервера, в моем примере это «Trassir 4 Server Autostart”.

Загрузитесь в Windows Server 2012 R2-02
Этот путь будет работать для всех пользователей, вошедших на сервер. Если вам необходимо реализовать автоматический запуск утилит или процессов для конкретного пользователя, вам необходимо поместить необходимую ссылку по этому пути:

C: Users Профиль пользователя AppData Roaming Microsoft Windows Меню Пуск Программы Пуск

Альтернативный метод установки программ, необходимых для автоматического запуска конкретным пользователем, – это ввести команду в окне «Выполнить:

оболочка: загрузка

добавить программу при запуске Windows Server

Вы можете смело добавить программу в автозагрузку Windows Server здесь.

Настройка автозагрузки через реестр Windows

автозагрузку можно настроить в операционных системах семейства Windows Server 2012 R2 и более поздних версий через реестр. Для этого перейдите в ветку:

HKEY_LOCAL_MACHINE SOFTWARE Wow6432Node Microsoft Windows CurrentVersion Run

Загрузитесь в Windows Server через реестр

Здесь у вас будет список программ, запускаемых для конкретного пользователя. Если вам нужно что-то добавить в автозапуск, создайте новый строковый ключ (REG_SZ). Укажите имя раздела реестра и укажите путь к исполняемому файлу.

Раздел реестра автозагрузки в Windows Server 2012

Управление автозагрузкой Windows Server 2012 R2 через Ccleaner

Об этой полезной утилите я вам уже много раз рассказывал. Он позволяет не только очищать ваш компьютер или сервер, но и контролирует автоматический запуск. Для этого перейдите в раздел «Сервис – Автозагрузка». Будет список ваших программ, которые запускаются при подключении к серверу.

Управление запуском Windows Server 2012 с помощью ccleaner

Чтобы что-то отключить, выберите нужный пункт и нажмите кнопку «Отключить». Обратите внимание, что вы можете сразу изменить пункты контекстного меню (щелкнув правой кнопкой мыши), вы можете исключить ненужные пункты.

Настройка контекстного меню Windows Server 2012 r2

Управление автозагрузкой в Autoruns Sysinternals

Существует серия утилит Microsoft под названием Sysinternals. Содержит служебную программу autoruns.exe. Это специализированная утилита для управления запуском всего, что возможно в операционной системе Windows.

Вот как выглядит общее окно со всем, что только что было загружено на ваш Windows Server. Вы можете найти это здесь:

  • Ключи реестра
  • Процессы и утилиты
  • Библиотеки
  • Драйверы
  • Кодаки

Обработка автозапуска в Autoruns Sysinternals-01

Например. Я хочу, чтобы служба обновлений Google Chrome не запускалась, откройте вкладку «Службы» и отмените выбор необходимых служб, отключив тем самым автоматическую загрузку.

Управление автозапуском в Autoruns Sysinternals-02
Теперь посмотрите на вкладку «Вход», в ней будут перечислены процессы, которые запускаются при входе в систему, все, что вам не нужно отключать.

Обработка автозапуска в Autoruns Sysinternals-03

  • Remove From My Forums
  • Question

  • How can I disable Windows Server 2016 Startup Programs? I cannot see the ‘Startup’ tab on Task Manager?

All replies

  • Probably the same as for 2012 R2, you can use AutoRuns

    https://docs.microsoft.com/en-us/sysinternals/downloads/autoruns


    Regards, Dave Patrick ….
    Microsoft Certified Professional
    Microsoft MVP [Windows Server] Datacenter Management

    Disclaimer: This posting is provided «AS IS» with no warranties or guarantees, and confers no rights.

    • Proposed as answer by

      Monday, August 7, 2017 2:01 PM

  • I agree with Dave and Nedim on this one. 

  • That mean the Windows 2016 server cannot disable the auto startup programs? The AutoRuns modified the regedits?

    Sorry, how can I use the AutoRuns?
    ‘Autoruns64.exe’ > Everything > (tick out) the items??

    • Edited by
      edwinlcf
      Monday, August 7, 2017 7:42 PM
  • That’s correct, there’s no UI for it. Also take a look in;

    C:ProgramDataMicrosoftWindowsStart MenuProgramsStartUp

    or

    C:Users»some user»AppDataRoamingMicrosoftWindowsStart MenuProgramsStartup

    or possibly;

    https://msdn.microsoft.com/en-us/library/windows/desktop/aa376977(v=vs.85).aspx


    Regards, Dave Patrick ….
    Microsoft Certified Professional
    Microsoft MVP [Windows Server] Datacenter Management

    Disclaimer: This posting is provided «AS IS» with no warranties or guarantees, and confers no rights.

    • Edited by
      Dave PatrickMVP
      Monday, August 7, 2017 7:45 PM
  • Hello,

    If you are not able to see the startup tab in task manager you may also follow the below procedure to achieve the goal.

    start -> RUN -> msconfig ->startup tab-> select the programs and manage it accordingly.

    Regards,

    Nick.

  • In Windows 10 / Windows Server 2016, Startup items are not enabled on this system

  • Hi,
    Just checking in to see if the information provided was helpful. Please let us know if you would like further assistance.

    Best Regards,

    Frank


    Please remember to mark the replies as answers if they help and unmark them if they provide no help.
    If you have feedback for TechNet Subscriber Support, contact
    tnmff@microsoft.com.

  • In Server Manager click Manage > Server Manager Properties > Check «Do not start Server Manager automatically at logon

    • Proposed as answer by
      frank_songMicrosoft contingent staff
      Monday, February 26, 2018 4:45 AM
  • Hi,

    Was your issue resolved? 

    If you resolved it using our solution, please «mark it as answer» to help other community members find the helpful reply quickly.
    If you resolve it using your own solution, please share your experience and solution here. It will be very beneficial for other community members who have similar questions.
    If no, please reply and tell us the current situation in order to provide further help.

    Best Regards,
    Frank


    Please remember to mark the replies as an answers if they help.
    If you have feedback for TechNet Subscriber Support, contact
    tnmff@microsoft.com

  • I use CCleaner that have startup management and it works on Windows Server 2016

  • Thanks! Only you solution work!

    Another ways deprecated by MS.

  • Note that the Run keys are only one of many ways programs can be configured to run automatically.  That’s the beauty of the autoruns tool — it exposes them all.  Cheers.


    David W Knight

  • Typical Microsoft… Hack the registry to make it work…. Or just do what everyone should be doing now…

    Just run OS-X in the first place.  (Windows programmer for 35+ years, but getting sick of this kind of stuff… any idea how many times I’ve had to hack the registry to get stuff to work, or worse, completely work around the OS…)  It is totally
    INSANE that there wouldn’t be UI for this kind of thing…

    And worse, the program that always runs when you login to a server is totally useless.. I’ve never found ONE thing that I can DO with ‘server manager’

    (One of the other answers says you can turn that garbage off inside the app… which I finally was able to turn off for the first time in about a decade since this junk app was written…

    I keep several .Reg files that I click on to fix defects in Windows… Er, turn off «features» that have no UI to turn them off…  I even have a program that runs in the background to kill off the auto-update program so it doesn’t reboot
    my machine I’m using as a build server… (Oooh, you would NEVER use a Windows 10 machine for that, we NEED to reboot it daily/randomly… WE NEED CONTROL OF OUR MACHINE… WE Paid for it after all… oh, wait? we didn’t?  Doesn’t matter what you want
    make no difference to us…)  And to apply ANY change to the machine Windows wants to reboot.  New USB device driver? Reboot… no reason, just reboot..

    Crazy OS…

  • Remove From My Forums
  • Question

  • I have deployed a Windows 2016 server as a Hyper-V host.  However the server manager is always showing Red for Local Server and All Servers under Services.  The services are Sync Host_3d6a513 and Downloaded Maps Manager. 

    I can start the Sync Host service but the Downloaded Maps Manager starts then stops.  Does not seem to be causing issues but I would like to see a Green status in my Server Manager.  Can I just set these to manual?  Do I even need them?

Answers

  • Hi,

    Sync Host_3d6a513 service synchronizes mail, contacts, calendar and various other user data. Mail and other applications dependent on this functionality will not work properly when this service is not running. Regarding the sentence «I disabled the
    Downloaded Maps Manager but I can’t disable the  Sync Host_3d6a513 service«, would you please describe more details
    about it?

    Best Regards,

    Alvin Wang


    Please remember to mark the replies as answers if they help and unmark them if they provide no help.
    If you have feedback for TechNet Subscriber Support, contact
    tnmff@microsoft.com.

    • Proposed as answer by

      Tuesday, October 25, 2016 2:48 AM

    • Marked as answer by
      Alvwan
      Monday, October 31, 2016 2:24 AM
  • Remove From My Forums
  • Question

  • I have deployed a Windows 2016 server as a Hyper-V host.  However the server manager is always showing Red for Local Server and All Servers under Services.  The services are Sync Host_3d6a513 and Downloaded Maps Manager. 

    I can start the Sync Host service but the Downloaded Maps Manager starts then stops.  Does not seem to be causing issues but I would like to see a Green status in my Server Manager.  Can I just set these to manual?  Do I even need them?

Answers

  • Hi,

    Sync Host_3d6a513 service synchronizes mail, contacts, calendar and various other user data. Mail and other applications dependent on this functionality will not work properly when this service is not running. Regarding the sentence «I disabled the
    Downloaded Maps Manager but I can’t disable the  Sync Host_3d6a513 service«, would you please describe more details
    about it?

    Best Regards,

    Alvin Wang


    Please remember to mark the replies as answers if they help and unmark them if they provide no help.
    If you have feedback for TechNet Subscriber Support, contact
    tnmff@microsoft.com.

    • Proposed as answer by

      Tuesday, October 25, 2016 2:48 AM

    • Marked as answer by
      Alvwan
      Monday, October 31, 2016 2:24 AM

Для некоторых программ очень важна стабильная работа без длительных отключений, простой в течении 1 часа торгового терминала может стоить больших денег. Автоматический запуск нужных приложений поможет избежать простоя в случае перезапуска сервера, в результате обновления Windows, технической неполадки или сбоя.

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

Выполняем команду control userpasswords2. Это можно сделать кнопками win+r или через консоль.

Снимите флажок Требовать ввод имени пользователя и пароль и нажмите ОК.


В появившемся окне введите имя пользователя и пароль, которые следует использовать для входа в систему и нажмите кнопку OK.

Теперь при запуске windows будет производиться автоматический вход в систему с указанными учетными данными, и мы можем добавить нужную программу в автозапуск. 

Переходим по адресу:

 C:ProgramDataMicrosoftWindowsStart MenuProgramsStartup

и загружаем в эту папку ярлык программы, которая будет запускаться автоматически. В нашем случае —  это ярлык блокнота.

Если программу нужно запускать не для всех пользователей, а для определенного, тогда загружаем ярлык по адресу:

C:UsersUserNameAppDataRoamingMicrosoftWindowsStart MenuProgramsStartup

Для тестирования можно перезагрузить Windows и проверить, что программа запустилась автоматически.

Программа как служба или как превратить любую программу в службу на Windows

Loney_Break

22:34

Комментариев нет

Рано или поздно, у простого пользователя или прожженого сисадмина возникает такая ситуация как: «Превратить программу в службу». Зачем это нужно, и в чем отличие. Если сильно не вдаваться в подробности то слушайте. Служба — это такое приложение , которое автоматически запускается при старте Windows, и работает в фоновом режиме. Сразу же поясняю что к чему. По поводу автозапуска — не всегда пользователю требуется запуск службы автоматически со стартом системы, это всегда можно изменить и настроить как вам нужно. По поводу фоновой работы — эта такой способ работы приложения, при котором оно не взаимодействует с рабочем столом, т.е. не отображается.(Тихо и незаметно работает на своем месте) Столкнулся я с такой проблемой при подключении к базе данных 1С через Публикатор (Аналог 1С Линк) развернутый на Windows server 2012. Все было отлично, программа работала и тихо раздавала базы, но случился маленький ньюанс. После выхода из пользователя , под которым была запущена программа, базы перестали раздаваться т.к. Публикатор завершил свою работу. Что же делать? Было решено сделать из программы Публикатор»  — службу. Тогда программа сможет работать постоянно, независимо от того, какой пользователь запущен. Сейчас я вам покажу, как просто, без каких либо крутых навыков превратить почти любую программу в службу. Во первых, нам потребуется программа под названием NSSM расшифровывается как Non-Sucking Service Manager. Скачать ее можно на официальном сайте: Ссылка на сайт Программы Прямая ссылка на скачивание программы : Прямая ссылка на скачку программы Скачав по ссылке, вы получите архив, внутри которого находиться:

Папки:
scr — папка с исходниками программы, вдруг вы захотите покапаться во внутренностях программы или переделать ее под себя.
win32 — папка с программой рассчитанной под операционную систему windows разрядностью 32 бита.
win64 — папка с программой рассчитанной под операционную систему windows разрядностью 64 бита.

Файлы:
ChangeLog.txt — файл с описанием изменений каждой версии программы.
README.txt — файл с описанием программы.

Теперь, когда мы познакомились с содержимым архива, приступим к установке. В зависимости от разрядности вашей системы 32/64 бита, выбираем папку с программой.(Если у вас разрядность системы 32 бита то выбираем win32, если 64 то win64). Переносим эту папку в корень диска с операционной системой(Желательно), и запускаем командную строку(Вызвать ее можно комбинацией клавиш Win+R, и в сплывающем окне набрать cmd и нажать OK)

Откроется командная строка,и в ней набираем команду cd и путь к программе nssm. Например:

cd C:/

Далее набираем команду —  nssm install + имя будущей службы. Например:

nssm install publikator

И перед нами предстает окно программы nssm.

Расскажу коротко о настройках которые нам потребуются.

Path — в этом поле указываем путь к программе которую мы хотим переделать в службу(Обязательно).
Startup directory — директория нахождения программы(Обязательно).
Arguments — дополнительные параметры запуска программы(Не обязательно).
Service name — наименование будущей службы(Можно назвать как угодно, хоть MEGASLUZBA).

На этом в принципе все, дополнительных настроек не требуется.
После всех настроек нажимаем кнопку install service и запускаем диспетчер задач и наблюдаем нашу службу.

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

P.S.на всякий случай,если у вас не работает стабильно ваша программа, то в разделе process, уберите галочку Console Windows.

Что бы внести изменения в вашу службу, запустите командную строку и введите команду: nssm edit + название вашей службы

nssm edit publikator

3.7
3
голоса

Рейтинг статьи

Как запустить приложение в виде службы Windows

Можно ли запустить клиентское приложение в качестве службы? В одной из статей я описывал способы создания службы Windows штатными средствами ОС. Однако не каждое консольное приложение сможет запуститься как служба, а программы с графическим интерфейсом в принципе не умеют работать подобным образом. Но возможность запустить приложение как службу все же есть, и поможет нам в этом программа с оригинальным названием Non-Sucking Service Manager.

NSSM представляет из себя свободное программное обеспечение с открытым кодом и поддерживает все операционные системы Microsoft, начиная с Windows 2000 и заканчивая Windows 8. NSSM не требует установки, достаточно его загрузить и распаковать. В дистрибутив входят версии для 32- и 64-разрядных ОС. Взять программу можно с сайта nssm.cc, на данный момент последняя стабильная версия 2.21.1, которую я и буду использовать.
Для демонстрации возможностей NSSM попробуем запустить Блокнот Windows в качестве службы на Windows 8.1.

Создание службы

Для создания службы с именем notepad запускаем командную консоль, переходим в папку с распакованным NSSM (для 64-разрядной Windows) и вводим команду

которая открывает окно графического инсталлятора NSSM. Чтобы создать службу, достаточно в поле Path указать путь к исполняемому файлу и нажать кнопку «Install service». Дополнительно в поле Options можно указать ключи, необходимые для запуска службы.

Nssm1

Также на этапе создания новой службы можно указать некоторые дополнительные параметры.

На вкладке «Shutdown» перечислены методы остановки и таймауты, используемые при штатном завершении работы или аварийной остановке приложения. Когда NSSM получает команду остановки (напр. при завершении работы приложения), то он пытается остановить контролируемое приложение штатным образом. Если же приложение не отвечает, то NSSM может принудительно завершить все процессы и подпроцессы этого приложения.

Всего есть четыре этапа завершения работы приложения, и по умолчанию они будет использоваться в таком порядке:

• На первом этапе NSSM пытается сгенерировать и отправить событие Ctrl+C. Этот способ хорошо работает для консольных приложений или скриптов, но не применим для графических приложений;
• Затем NSSM определяет все окна, созданные приложением, и посылает им сообщение WM_CLOSE, инициирующее выход из приложения;
• Третьим этапом NSSM вычисляет все потоки, созданные приложением, и отправляет им сообщение WM_QUIT, которое будет получено если приложение имеет очередь сообщений потока;
• И в качестве последнего средства NSSM может вызвать метод TerminateProcess(), принудительно завершив работу приложения.

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

Nssm2

По умолчанию при падении службы NSSM пытается рестартовать ее. На вкладке «Exit actions» можно изменить автоматическое действие при нештатном завершении работы приложения, а также выставить задержку перед автоматическим перезапуском приложения.

Nssm3

На вкладке «Input/Output (I/O)» можно задать перенаправление вводавывода приложения в указанный файл.

Nssm4

На вкладке «Environment» можно задать для службы новые переменные окружения, или переопределить существующие.

Nssm5

Также можно не пользоваться графической оболочкой и сразу создать службу в консоли такой командой:

nssm install notepad "C:Windowssystem32notepad.exe"

Управление службой

После создания службы с помощью NSSM зайдем в оснастку Services и найдем службу notepad. Как видите, с виду она ничем не отличается от остальных служб, мы также можем ее запустить, остановить или изменить режим запуска. Однако обратите внимание, что в качестве исполняемого файла указан nssm.exe.

Nssm6

А если зайти в Task Manager, то мы увидим следующую картину: в качестве основного (родительского) процесса запущен NSSM, служба notepad запущена как его дочерний процесс, и уже в этом дочернем процессе запущено приложение Блокнот.

Nssm7

Удаление службы

Для удаления службы вводим команду nssm remove notepad и подтверждаем ее удаление. А введя команду

nssm remove notepad confirm

можно обойтись и без подтверждения.

Nssm8

Нужно сделать так, чтобы пользователь запускал приложение, чаще всего это 1С Предприятие, так чтобы рабочего стола терминального сервера не отображалось. У нас уже есть терминальный сервер с установленным сервером лицензий и узлом сеансов удаленных рабочих столов. Можно это сделать через публикацию приложения через RemoteApp. Для этого потребуется установка дополнительных компонентов, но можно обойтись и так, прописав некоторые параметры в реестре на сервере Подключимся к серверу и создадим файл с расширением reg. Вставим туда следующее:

Параметр IconPath нужно указать свой. Перейдите в каталог “%SYSTEMDRIVE%WindowsInstaller и найдите в каком подкаталоге находится файл ShortCut_ThinStarter.exe

Сохраните файл и запустите от имени администратора.

Проверьте что получилось.

Откройте текстовый редактор, сохраните содержимое файла ниже. Впишите адрес сервера к которому нужно подключатся и сохраните в файл с расширением .rdp

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

В некоторых случаях необходимо запускать какие либо приложения на сервере например программу 1С. Т.е создается отдельно сервер ставиться на него 1С и пользователи с помощью rdp подключаются и работаю на нем. Но это не совсем удобно так как при простом подключении по rdp пользователь видит новый рабочий стол.

Если к примеру нужно открыть какой либо другой документ на рабочем столе то нужно свернуть терминальную сессию. Лучше сделать так чтобы при подключении по RDP запускалась только программа. Выглядеть это будет как запуск обычного приложения хотя на самом деле это будет удаленное подключение к серверу.

Давайте на пример 1С создать такой RDP ярлык. Рассмотрим два способа создания подобного ярлыка один средствами Windows второй с помощью Windows Server. Напомню что для таких подключений необходимо создать пользователей на сервере. Делается это через Управление компьютером если кто не знает или забыл.

С помощью Windows 7

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

В открывшемся окне переходим на вкладку Программы. Ставим галочку на против пункта При подключении запускать следующею программу указываем путь и рабочую папку программы.

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

С помощью Windows Server 2008

В качестве примере я воспользуюсь Server 2008. И так заходим на сервер с правами администратора. Идем в Пуск — Администрирование — Службы терминалов — Диспетчер удаленных приложений RemoteApp служб терминалов.

Для начала нужно добавить приложение, для этого в низу в окне Удаленные приложения remoteApp кликаем правой кнопкой и выбираем Добавить удаленное приложение… Проходим все пункты с помощью мастера там ничего сложного нет по этому описывать ничего не буду.

Теперь создадим сам ярлык. Выделяем в добавленное приложение в окну Удаленные приложения потом в правой части окна кликаем на Создать RDP-файл.

Откроется мастер создания проходим все необходимые шаги тут также все просто ни чего менять не нужно.

В конце должно открыться окно с созданным ярлыком.

Копируем этот ярлык на рабочею станцию и пробуем подключиться с помощью ранее созданной учетной записи пользователя.

Если вы все сделали правильно то должна запуститься выбранная вами программа в моем случае это 1С. Ну вот все надеюсь кому то пригодиться данная статья.

Войти

Автоматический запуск программы при подключении по RDP (Server 2016)

HKEY_LOCAL_MACHINESOFTWAREPoliciesMic rosoftWindows NTTerminal ServicesName: fQueryUserConfigFromDC

Type: Reg_DWORD
Value: 1 (Decimal)

HKEY_LOCAL_MACHINESYSTEMCurrentControl SetControlTerminal ServerWinStations
Name: fQueryUserConfigFromDC
Type: Reg_DWORD
Value: 1 (Decimal)

По-умолчанию значение для — это RDP-tcp. Но это значение может быть иным.

Не многие начинающие администраторы знают, что работу в 1С на сервере терминалов можно организовать по аналогии с RemoteApp, без RemoteApp!

Выражаясь простыми словами пользователь, кликнув по ярлыку подключения (RDP) запускает сразу 1С Предприятие, при этом он не видит рабочего стола сервера, других приложений, ему доступна только 1С и он работает исключительно в 1С, так словно та стартовала у него на ПК.

Конечно в этой статье «Америку не открою» информации как это сделать самостоятельно, полно в сети, если бы не одно «НО».

К сожалению, по умолчанию этот механизм перестал работать на Windows server 2016. Он был просто отключен по умолчанию. (

Из-за этого многие остались работать на Windows server 2012 -2008, а некоторые перешли на RemoteApp, так и до конца не разобравшись с проблемой.

RemoteApp технология хорошая, вот только требует Active Directory, соответственно еще один сервер, а значит дополнительные финансовые затраты.

Да и для 10-15 пользователей AD обычно не нужен, и сознательно идти на доп. затраты чтоб организовать авто запуск 1С на сервере, конечно никто не желает, собственно и здесь нашлись «энтузиасты» по обходу такого звена как AD, соответственно тем самым  нарушили лицензионное соглашение.

Если RemoteApp для Вас дорого, и нарушать лицензионное соглашение для Вас не выход (что правильно), а работа на старой операционной системе не вызывает особого желания.

Настройка Windows Server 2016 для работы с автозапуском 1с на сервере терминалов.

Настроим Windows server 2016 (используя обычный сервер терминалов) с автозапуском 1С Предприятия.

1. Установка, настройка и лицензирование сервера терминалов на Windows Server 2016

Пример, инструкция доступна по ссылке:
http://statusspb.com/kak-ustanovit-sluzhby-udalennyh-rabochih-stolov-na-windows-server-2016-2019
 

После установки и настройки сервера терминалов обязательный перезапуск ОС.

2. В реестр Windows server 2016 нужно внести изменения!

Кому интересно вносить изменения в реестр руками, вот инструкция:

HKEY_LOCAL_MACHINESOFTWAREPoliciesMicrosoftWindows NTTerminal Services 
Name: fQueryUserConfigFromDC
Type: Reg_DWORD
Value: 1 (Decimal)

HKEY_LOCAL_MACHINESYSTEMCurrentControlSetControlTerminal ServerWinStations<Winstation Name>
Name: fQueryUserConfigFromDC
Type: Reg_DWORD
Value: 1 (Decimal)

3.  Настройка запуска 1С в «среде» пользователя.

Кликаем «Пуск»- «Панель управления»

Автозапуск 1С при подключении к серверу терминалов

Затем «Администрирование»«Управление компьютером»

Далее на вкладке слева «Локальные пользователи»«Пользователи»

Автозапуск 1С при подключении к серверу терминалов

В свойствах пользователя, при авторизации которого должна автоматом стартовать 1С,

мы и  пропишем на вкладке «Среда» путь к программе 1С.

Автозапуск 1С при подключении к серверу терминалов

Ставим птичку «При входе в систему запускать следующую программу:»

В строке «Имя файла программы» следует указать путь к исполняемому файлу 1С:

Пример: C:Program Files (x86)1cv8common1cestart.exe

«Рабочая папка» C:Program Files (x86)1cv8common

Почему прописал 1cestart.exe, а не 1cv8.exe ?

При обновлении платформы 1с, путь к программе будет оставаться прежним на вкладке «Среда» и 1С перестанет запускаться автоматом.

Но если прописать стартер 1cestart.exe, тогда 1С даже после обновления будет стартовать!

Конечно у пользователей должны быть права на 1cestart.exe, как и на любую другую программу на сервере, иначе стартовать автоматом программа не будет, и сессия будет тут-же завершена. 

Ниже на вкладке «Устройства клиента»

Можно поставить все птички:

«Подключение дисков клиента»

«Подключение принтеров клиента при входе»

«По умолчанию выбрать основной принтер клиента»

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

4. Настройка ПК пользователя для работы с терминальным сервером

Создадим ярлык rdp для подключения.

Клик Win+R  пишем в строке «mstsc» затем «Enter» выполнить.

Автозапуск 1С при подключении к серверу терминалов

Укажем, к примеру, IP сервера терминалов и логин пользователя:

Автозапуск 1С при подключении к серверу терминалов

«Сохранить как» – Сохраним подключение как ярлык, где не будь на рабочем столе пользователя под именем «1С»

Автозапуск 1С при подключении к серверу терминалов

Теперь кликнув по ярлыку «1С» пользователь сможет тут же запустить 1С и работать в ней фактически как с локально установленной.

Пользователь не видит никаких других рабочих столов, не путается в ярлыках и подключениях, все просто и понятно!

При первом запуске нужно первый раз прописать путь к базе 1С, собственно как и обычно на сервере терминалов.

Автозапуск 1С при подключении к серверу терминалов

5. Иногда нужно не просто запустить 1С, но сделать все на полном автомате.

То-есть чтоб пользователь, кликнув по ярлыку rdp «1C»  и она не просто запустилась, но и была автоматом выбрана нужная информационная база 1С и прошла авторизация под нужным пользователем.

Делается это очень просто, нужно создать бат файл следующего содержания:

set v8exe="C:Program Files1cv8common1cestart.exe"set DataBaseName="E:InfoBase2"set DataBase=/F%DataBaseName%set AdminUser=/N"Администратор (ОрловАВ)"set Password=/P""start """" /wait %v8exe% ENTERPRISE %DataBase% %AdminUser% %Password%

На вкладке «Среда» в свойствах пользователя на сервере терминалов, нужно приписать только путь к этому батнику «1c.bat» вместо 1С, указать каталог, где он находится!

1С Предприятие будет стартовать с нужной нам ИБ и пользователем.

Понравилась статья? Поделить с друзьями:
  • Запуск программы заблокирован администратором windows 10
  • Запуск программы вместо explorer windows 10
  • Запуск программы в трее windows 10
  • Запуск программы в свернутом виде windows 10
  • Запуск программы в полноэкранном режиме windows 10