Здравствуйте. Есть сервер Windows Server 2016 Standart и Ruby on Rails ( приколожение которое запускается из консоли). Как правильно сделать автозапуск приложения при запуске или перезагрузке сервера? Пробовал поигратся с планировщиком задач, но ничего не вышло, как идея может есть вариант сделать автозагрузку пользователя при старте системы, а у пользователя уже сделать автозапуск? Спасибо?
1.Можно запускать как сервис. Создать сервис можно с помощью sc create /? или srvany (поищите в интернете).
2.С помощью шедулера - повесить задание на старт компьютера или на вход пользователя.
3.Поместить в автозагрузку.
4.Прописать параметр автозагрузки в реестре: HKLM\Software\Microsoft\Windows\CurrentVersion\Run
или аналогичный параметр в ветке HKCU.
Учтите, что при разных вариантах автостарта ваше приложение может работать от разных пользователей, у которых может не быть нужных прав доступа. Возможно по этому у вас опыт с планироващиком закончился не удачно.
спасибо. Мне нужно что бы после перезагрузки сервера стартовало Рельсовое приложение.
Возможно ли такое в автоматическом режиме, без авторизации пользователя?
Богдан, Все приведенные методы как раз этим и занимаются, кроме 3 и 4 в варианте с HKCU.
Но стоит помнить о том, что ЛЮБОЕ приложение в винде (и не только) работает с правами некоторого пользователя, не зависимо от регистрации пользователя в винде.
Т.е. когда вы в шедулере создаете задание в настройках указываете от какого пользователя будет запускаться это задание. Со службами - аналогично.
С автозагрузкой из реестра то же, только пользователь выбирается автоматически по следующему алгоритму:
1.если приложение стартует на основании записи в реестре в ветке HKLM, то оно будет работать от имени пользователя СИСТЕМА
2.если приложение стартует на основании записи в реестре в ветке HKCU - от имени текущего зарегистрированного пользователя. И в этом случае приложение не запустится пока пользователь не зарегистрируется в системе. При выходе пользователя приложение будет остановлено.
Богдан, вообще, верно другие коллеги советуют, в вашем случае самым простым вариантом будет использование планировщика.
Он работает, просто надо научится его готовить.
Спасибо, коллеги. Задача решилась таким способом.
Сделал через утилиту AutoLogon, автозапуск нужного пользователя, в которого у меня в автозапуске (StartUp) стоит ярлык с запуском консольного приложения (запуск сервера рельс), ну я вписал еще в автозапуск блокировку пользователя "rundll32 user32.dll, LockWorkStation".
Все другие варианты, как планировщик, я не знаю как решить такие проблемы:
1) как сделать что бы приложение стартовало только под одним выбранным мне пользователем?
2) как сделать что бы приложение стартовало без входа пользователя?
3) как отобразить результаты консоли запущенного приложения при входе выбранного пользователя?
С пользователем "СИСТЕМА" у меня не получилось сделать задание в планировщике задач, процесс не стартовал?
Богдан, Это то же вариант, но не хороший.
1.в свойствах задания в планировщике задается пользователь под которым стартует задание
2.задать триггер задания на старт при загрузке ОС + запретить останавливать задание
3.по идее консоль у вас будет открываться еще до входа пользователя и при входе должна оставаться. Не знаю что с ней произойдет при выходе пользователя.
Для старта задания перезагрузитесь или стартуйте вручную из планировщика.
С пользователем СИСТЕМА задание, скорее всего стартовало, но тут же завершалось из-за недостаточности прав. СИСТЕМА это не Администратор, ей нужно давать права непосредственно и по умолчанию у нее права не везде.
Чтоб консоль не закрывалась запускайте задание через командный файл, в котором укажите последней командой: pause.
Заведите специального пользователя для задания с правами простого пользователя, настройте среду пользователя так что бы приложение нормально работало под ним, запущенное вручную, затем настройте задание в планировщике от имени этого пользователя.
PS: после того как вы придете к окончательному варианту старта у вас встанет вопрос: а что делать, если по ошибке прибили работающее приложение? Перезагружать сервер - не слишком удачный вариант.
Спасибо за ответ, но создал задание, с планировщика оно стартует, а вот автоматически при загрузке системы - нет, код ошибки 0x40010004. Может подскажите что неправильно я сделал, хотя я уже все варианты перепробовал.
Богдан, Что бы снять вопросы к планировщику для теста запустите простейший скрипт, который бы что-нибудь выводил на консоль/файл в цикле (возможно стоит начать с простого батника, потом перейти к простому скрипту на ruby). Если этот простой скрипт будет работать, значит планировщик делает свое дело. Тогда нужно разбираться почему не работает ваше приложение.
Отличия запуска из планировщика от запуска в ручную в винде только в правах доступа пользователя из под которого стартует задание и в текущей папке (если не ошибаюсь, при запуске задания текущей папкой становится system32, иногда это имеет значение).
res2001, спасибо за ответы. Действительно когда запускается скрипт с рельсами под пользователем СИСТЕМА оно не отрабатывает. А как ему дать эти права? В безопасности папки RAILS и батника который его запускает, везде есть пользователь СИСТЕМА с полными правами. Но почему-то не отрабатывает под этим пользователем даже если запускать из планировщика вручную.
Вам и не нужно запускать из-под СИСТЕМы, запускайте с правами обычного пользователя, лучше завести отдельного пользователя для этих целей, которым сами никогда не будете пользоваться. Проверьте, что приложение под этим пользователем работает при ручном запуске.
Создал задачу на событие "при запуске", для пользователя "СИСТЕМА"... Даже при запуске с планировщика задач, не создается процесс запущенной программой.
по идее должен (когда я в планировщике указываю свою админскую учетку, то все стартует, с планировщика, но не стартует при загрузке, пока не в войти под пользователем)
Богдан, Приведите пожалуйста полную строку запуска.
И объясните как вы понимаете, что задача не запускается, по каким критериям?
Планировщик в логах что пишет - успешно или нет?
Все равно не работает.
Код ошибки для этого простого батника 0xC0000013A
Код ошибки в моем рабочем батнике 0x40010004
Может у Вас есть пример рабочего задания, если у Вас есть возможность скинуть его, а я уже по аналогии подпилю и свое задание?