PDA

Показать полную графическую версию : служба запускающая .exe требуется помощь...


St.z
17-05-2013, 17:32
Добрый день,
столкнулся с проблемой создания службы для вин7 и ХР, идея такая есть софтина которая собирает данные с ПК и отправляет отчёт на некий фтп, требуется от неё чтоб она запускалась при каждой загрузке винды и через энное количество времени отправляла свой отчёт. Задача в принципе простая тут и VBS бы подошёл или батничек, но у службы ряд плюсов, например запуск без логона да и работает она как не крути стабильней (батник закрыть могут пока выполняется (хотя тоже можно обойти) и самое главное служба от имени системы выполняется, что решает ряд проблем с правами. Так родилась идея создания службы. В силу отсутствия углублённых знаний в программировании попробовал просто конвертировать bat в exe. И ура получилось, ставится как служба и даже стартует софтину которая собирает данные с ПК. Но если попытаться перезапустить службу в ручную винда выдаёт ошибку 1053 "служба не ответила на запрос своевременно." И самое главное периодичность отправления 10 минут а задумывалось 5 часов (значит bat конвертированый в ехе коректно не выполнялся). Тут я обратился к мануалам по созданию служб средствами microsoft visual studio и delphi 7. Нашёл всё про то как создать службу и вроде б даже разобрался, но не нашёл примеров как можно прикрутить этой службе .ехе и задать цикл его перезапуска по времени. Вот решил обратиться к специалистам, может статейку подкинете или пример приведёте. Заранее спасибо.

deviance
17-05-2013, 18:36
St.z, не нашёл примеров как можно прикрутить этой службе .ехе и задать цикл его перезапуска по времени. »
Лично мной вопрос не понят полностью. Отвечаю наугад: *.exe файл можно запустить функцией system() (http://pubs.opengroup.org/onlinepubs/009695399/functions/system.html), а задержку во времени можно реализовать с помощью Sleep() (http://msdn.microsoft.com/en-us/library/windows/desktop/ms686298%28v=vs.85%29.aspx) или SetTimer() (http://msdn.microsoft.com/en-us/library/windows/desktop/ms644906%28v=vs.85%29.aspx)

yurfed
17-05-2013, 18:38
есть софтина которая собирает данные »Может хватит жевать и скажите название программы о которой говорите?
например запуск без логона да и работает она как не крути стабильней »Кто вам такое сказал?
как можно прикрутить этой службе .ехе и задать цикл его перезапуска по времени. »Планировщик задач ещё никто не отменял.

Iska
17-05-2013, 19:06
Чем не устроил стандартный планировщик задач — не понимаю.

St.z
18-05-2013, 01:54
службы виндовс запускаются до того как пользователь залогинится в систему, вроде как общеизвестно, имя программы 10strike, прогрмма инвенторизации.

Delirium
18-05-2013, 01:58
службы виндовс запускаются до того как пользователь залогинится в систему »
Стандартный планировщик(вроде как тоже общеизвестно :)) тоже умеет работать до входа в систему. И под нужными правами. И по таймеру.

St.z
18-05-2013, 02:01
вместо толкового совета получил пару отговорок, чтож и на том спасибо...

Iska
18-05-2013, 06:54
вместо толкового совета получил пару отговорок, чтож и на том спасибо... »
Пока Вы, вместо вменяемого объяснения, почему Вам не подходит Планировщик задач, будете упражнять свою иронию, толку не будет.

http://img12.imageshack.us/img12/4743/image00120130518070120.png

http://img442.imageshack.us/img442/5463/image00120130518070158.png

St.z
20-05-2013, 05:41
Iska, Если мне память не изменяет на ХР и на вин7 планировщики отличаются, если сделать задачу под вин7, и разослать её на пару сотен ПК (плохо ещё то что планировщик может по каким либо причинам не работать самодельные сборки сделанные некоторыми предшественниками) будет ли оно работать одинаково корректно и под семёркой и под ХР? Задача заключается в том что установку этого самого ПО нужно сделать максимально простой, двойной клик по файлу и не больше того, потому что уровень подготовки у людей за РМ разный а работать должно везде. Изначально я делал SFX архив который распаковывался и под учёткой админа ставил 10 страйк, службу я делал как описал в первом посте, просто конвертировал bat в exe (программа bat to exe converter) служба ставилась нормально и запускала 10 страйк но не каждые пять часов (это было прописано в bat файле который конвертировал в exe) а каждые 10 минут.

Iska
20-05-2013, 09:26
St.z, память Вам не изменяет. Используйте, например, синтаксис команды «schtasks.exe», одинаковый для тех и других ОС: Schtasks.exe (Windows) (http://msdn.microsoft.com/en-us/library/windows/desktop/bb736357(v=vs.85).aspx).

schtasks /create site:microsoft.com - Поиск в Google (https://www.google.ru/search?q=Schtasks+%2FCreate+site%3Amicrosoft.com)




© OSzone.net 2001-2012