Запустить МТ под 2003 Enterprise в качестве службы

 

Возможно ли это?

Ситуация стандартная - советник должен крутиться с минимальным вмешательством и хочется застраховаться от случайного его закрытия

 

Технически не вижу препятствий, можно попробовать два способа:

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

второй способ: использовать возможность "запустить программу как сервис", но я ни разу им не пользовался поэтому результат предсказать не могу.

 
Cronex:

Технически не вижу препятствий, можно попробовать два способа:

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

второй способ: использовать возможность "запустить программу как сервис", но я ни разу им не пользовался поэтому результат предсказать не могу.


Второй способ как вариант не рассматривается. Штатными средствами не обойтись.

Пытался решить проблему первым способом. Так же не прокатило. Используемый софт - майкрософтовский srvinstw.exe, коммерческие FireDaemon и Service-O-Matic. Тонкостей не помню, но в итоге была проблема - terminal.exe удается указать в качестве сервиса, но при старте системы в логах как раз указанная Cronex ошибка (нет взаимодействия с сервисами), terminal.exe просто висит в списке процессов, но самого GUI MT4 нет.

В итоге так и не удалось. И шедулером тоже не запустить - в WS2003 автологона нет.

Если кто подскажет гарантированно работающее решение - был бы признателен.
 
Одно из решений от случайного закрытия: переобозвать terminal.exe в qwert.exe (чтобы не было путаницы с другими терминалами ) и отслеживать наличие qwert.exe-процесса в памяти. Если процесс вдруг стал отсутствовать, запуск qwert.exe. Это возможно осуществить без программирования, используя GUI-штатные функции nnCron.
 
sereganlp:

Возможно ли это?

Ситуация стандартная - советник должен крутиться с минимальным вмешательством и хочется застраховаться от случайного его закрытия

да такое возможно!
только тут нужен контроль
что бы не запустить один и тот же терминал несколько раз

1 допустим включили компьютер он загрузился
2 запустил сервисом MT

тут вроде все хорошо

3 MT выгрузили неважно специально ошибочно

что делать ? если ошибочно - правильно - грузить автоматом заново

значит в сервисе делаем аналитику допустим по времени и каждые пол часа или час пытаемся грузить
но возникает проблема если MT запущен и работает и пришло время пуска - то вторая загрузка будет ошибочной и вредной
необходимо сервису оценить а не находится ли терминал в памяти
и если находится то не загружать его

тут тоже вроде все просто!
но если крутится одна копия терминала если же несколько то из памяти процесса необходимо извлекать путь по которому нужный терминал терминал
загружен и запускать те которых в памяти нет

----

я это сделал не сервисом а по шедулеру
гораздо проще
пишется программа которая вешается в шедулер
на вход подается параметре в виде

C:\MT\MTdemo1\TERMITAL.EXE
C:\MT\MTdemo2\TERMITAL.EXE
C:\MT\MTReal1\TERMITAL.EXE
C:\MT\MTReal2\TERMITAL.EXE
C:\MT\MTReal3\TERMITAL.EXE

шедулер пускает программу с параметром пути и имени, она получив параметры находит процес и смотри по процессу с какого пути пущен терминал
если не находит то пускает иначе просто завершается

периодичность в шедулере задается с необходимым согласно ТС интервалом

такую штуку я прикрутил к этому советнику ... https://forum.mql4.com/ru/10515

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

экономятся ресурсы машины - нет постоянного трафика с инетом в общем удобно
 
YuraZ:

да такое возможно!
только тут нужен контроль
что бы не запустить один и тот же терминал несколько раз

----
я это сделал не сервисом а по шедулеру

ИМХО, речь шла о другом. Если компьютер уйдет на перезагрузку, то восстановить терминал в случае Windows Server 2003 нельзя.
Потому что в WS2003 нет автологона. А без логина пользователя не запускаются шедулеры. Приходится принудительно загружаться по Ctrl+Alt+Del
и запускать вручную.

Ну и вдобавок, МТ4 не стартует как сервис - 1) или не стартует вообще, 2) или стартует terminal.exe, но GUI (сам МТ4) от него нет.
Я это писал сообщением выше.

Повторю вопрос (свой и топикстартера) - есть возможность автозапуска МТ4 именно в WS2003.
 
 
Dael:
Cronex:

Технически не вижу препятствий, можно попробовать два способа:



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



второй способ: использовать возможность "запустить программу как сервис", но я ни разу им не пользовался поэтому результат предсказать не могу.





Второй способ как вариант не рассматривается. Штатными средствами не обойтись.



Пытался решить проблему первым способом. Так же не прокатило. Используемый софт - майкрософтовский srvinstw.exe, коммерческие FireDaemon и Service-O-Matic. Тонкостей не помню, но в итоге была проблема - terminal.exe удается указать в качестве сервиса, но при старте системы в логах как раз указанная Cronex ошибка (нет взаимодействия с сервисами), terminal.exe просто висит в списке процессов, но самого GUI MT4 нет.



В итоге так и не удалось. И шедулером тоже не запустить - в WS2003 автологона нет.



Если кто подскажет гарантированно работающее решение - был бы признателен.



Автологон есть.

У меня 3 сервака 2003-их на работе автологоном заходят.

Для включения автоматического входа не обходимо в ветке HKEY_LOCAL_MACHINE\Software\ Microsoft\Windows NT\CurrentVersion\Winlogon установить ключ AutoAdminLogon в 1 (по умолчанию там такого значения вообще не существует), там же находятся ключи DefaultDomainName, DefaultPassword и DefaultUserName.

Пробуйте наздоровье.
 
Dael:
YuraZ:

да такое возможно!
только тут нужен контроль
что бы не запустить один и тот же терминал несколько раз

----
я это сделал не сервисом а по шедулеру

ИМХО, речь шла о другом. Если компьютер уйдет на перезагрузку, то восстановить терминал в случае Windows Server 2003 нельзя.
Потому что в WS2003 нет автологона. А без логина пользователя не запускаются шедулеры. Приходится принудительно загружаться по Ctrl+Alt+Del
и запускать вручную.

Ну и вдобавок, МТ4 не стартует как сервис - 1) или не стартует вообще, 2) или стартует terminal.exe, но GUI (сам МТ4) от него нет.
Я это писал сообщением выше.

Повторю вопрос (свой и топикстартера) - есть возможность автозапуска МТ4 именно в WS2003.


1- автологон в 2003 организовать можно - вам уже ответили

2-запускать МТ как сервис тоже можно, для этого надо написать сервис модуь который уже и будет стартовать MT

а зачем вам запсукать MT именно с помощью сервиса ?

не проще ли тогда автологон, - и затем в авторун - работает - нормально - проверено

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

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

 
StSpirit:

Автологон есть.

У меня 3 сервака 2003-их на работе автологоном заходят.

Для включения автоматического входа не обходимо в ветке HKEY_LOCAL_MACHINE\Software\ Microsoft\Windows NT\CurrentVersion\Winlogon установить ключ AutoAdminLogon в 1 (по умолчанию там такого значения вообще не существует), там же находятся ключи DefaultDomainName, DefaultPassword и DefaultUserName.

Хех. То, что автологон есть в WS2003 - это известно. Не всегда есть возможность его включить - особенно, не являясь администратором сервера. :) В моем случае я просто терминальный пользователь сервера, поэтому автологон я включить не могу. Буду думать. :)
 
Dael:
StSpirit:

Автологон есть.

У меня 3 сервака 2003-их на работе автологоном заходят.

Для включения автоматического входа не обходимо в ветке HKEY_LOCAL_MACHINE\Software\ Microsoft\Windows NT\CurrentVersion\Winlogon установить ключ AutoAdminLogon в 1 (по умолчанию там такого значения вообще не существует), там же находятся ключи DefaultDomainName, DefaultPassword и DefaultUserName.

Хех. То, что автологон есть в WS2003 - это известно. Не всегда есть возможность его включить - особенно, не являясь администратором сервера. :) В моем случае я просто терминальный пользователь сервера, поэтому автологон я включить не могу. Буду думать. :)

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