Версия для печати темы
Нажмите сюда для просмотра этой темы в оригинальном формате
Форум программистов > Delphi: WinAPI и системное программирование > Запуск приложения из под сервиса?


Автор: mixan 18.12.2006, 02:12
Доброе всем время суток!
Задача такова, написал прогу по ограничению времени работы за компом для ребенка, назвал хитро, спрятал в винде под видом системной проги, запхнул в реестровый авторан, но ребенок продвинутый, и быстренько удалил с авторана.
Попробовал написать сервис и из него запускать прогу при старте винды, но она как-то коряво запускается, некорректно, видно потому, что не загрузилась еще винда полностью.
Пробовал заменить в реестре своей прогой запуск службы синхронизации времени, но что-то не вышла эта затея, имеется ли какая-либо возможность решить эту задачу?
В принципе нашел предложения как-то что-то запускать из-под других сервисов, но написано недоступно для меня, не разобрался, может есть другие способы стартовать прогу при запуске винды скрыто или похитрому?
Заранее благодарен за доступные объяснения!

Автор: Nicholas_S 18.12.2006, 03:48
mixan,
1. нет ли возможности просто ограничить доступ ребенка стандартными средствами, в т.ч. к сервису
2. что делает программа ограничения времени? Почему нельзя включить функционал программы в сервис?
3. почему не запустить приложения ограничения времени после некоторого таймаута после запуска сервиса (если проблема в этом, конечно).

Автор: Snowy 18.12.2006, 11:12
Забрать у ребёнка админские права и не изобретать велосипед.
Как можно вообще пытаться ограничивать, оставляя права админа?

А можно не ограничивать время работы.
Просто логировать.
Выработал недельный лимит - запредить вообще доступ к компьютеру.

Автор: Nicholas_S 18.12.2006, 11:45
Цитата

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

Поверь, он выработает, и будет потом столько проблем после этой "переработки", что лучше сразу лимиты ставить, чтобы привыкал в будущем. По себе знаю.  smile 

Автор: mixan 18.12.2006, 15:18
Спасибо за участие!
Отвечаю:
1) Ребенок продвинутый, знает кое-что по хаку, потому узнать админский пароль для него труда не составит, такая прога есть у него...(работает)
2) Для включения функционала в сервис не хватает знаний об этой теме (а время поджимает, нужно что-то срочно делать  smile ), в принципе есть назначение горячих клавиш, проверка времени работы в таймере и запись данных в файл (или в реестр можно), вот не знаю как таймер организовать, да и несколько окошек тоже нужны, на апи писать не охота их...
3) вот как бы это сделать, просто вписать sleep(...), корректно ли это будет работать?

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

Автор: Nicholas_S 18.12.2006, 15:27
mixan, какая операционка на компе? Не слышал чтобы пропатченную XP можно было сломать утилитой из-под пользовательского доступа...
Если ребенок настолько продвинутый, что легко может получить администраторские права в системе, то, думаю, подменой сервиса его не остановить.
Почему API не годится?

Автор: x77 18.12.2006, 16:11
полчаса рисовал в пэйнтбраше мега-девайс.


как оно работает.

1. комп подключен к пилоту, который подключен к розетке. 
2. от гнезда пилота выведены два провода к электромагнитному реле, на якоре которого закреплена свеча. 
3. рядом с реле расположена спиртовка таким образом, что при нажатом якоре (когда идёт ток) свеча поджигает спиртовку.
4. над спиртовкой проходит верёвка, к которой прикреплён очень острый нож (как вариант - заточенная лопата, но придётся, имхо утежелять).
5. под острым ножом проходит кабель питания.

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

known issues.

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

Автор: Nicholas_S 18.12.2006, 16:18
x77, жжешь! smile Но есть еще одна проблема: компьютер с ребенком должен быть заключен в вентилируемый мышконепробиваемый корпус, чтобы он не смог выключить спиртовку и пригласить друзей, чтобы более рационально израсходовать ее содержимоей  smile  smile 
Наверное оффтоп...

Автор: x77 18.12.2006, 16:27
кстати, по сабжу. на месте юного хацкера я бы просто купил б/у-шный винт (или у друга ненужный одолжил), и всегда, когда мне надо - грузил систему с этого винта (манал я твои приблуды, папа). имхо, детей иногда полезно воспитывать ортодоксальными методами, а не программными smile

Автор: Nicholas_S 18.12.2006, 16:46
x77, и самый ортодоксальный - это отсутствие компьютера с детства  smile 

Автор: RA 18.12.2006, 20:11
Цитата(Nicholas_S @  18.12.2006,  15:27 Найти цитируемый пост)
Не слышал чтобы пропатченную XP можно было сломать утилитой из-под пользовательского доступа...


Это всё делается как из доса ручками, так и при помощи утили на загрузочных дисках (типа всяких ERD Commander, Reset Windows XP Admin Acess и тд.)


Афтар, не трожь дитё, пусть играет!!!!!!!!!!!! 

Автор: Nicholas_S 18.12.2006, 20:14
RA, если с этой стороны подходить - да  smile . Но тогда тут вообще ничего не поможет - принес свой винт, воткнул и сиди сколько влезет.  smile 

Автор: x77 18.12.2006, 20:16
нужен комп с дактилоскопической кнопкой включения питания. как на некоторых ноутбуках. 

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

Автор: bartram 19.12.2006, 14:57
можно сделать блокировку на запуск определенных приложений с помощью глобальных хуков в системе smile
ну  запустил допустим ребенок игру....пошел таймер...2 часа протикало....и делаем TeminateProcess smile потом просто блокируем запуск как я сказал(через хук на OpenProcess) и всё, так можно сделать ограничение игры по времени, допустим, можно ещё что нибудь придумать конечно smile

Автор: x77 19.12.2006, 15:45
bartram, это всё не имеет смысла, когда у чада есть физический доступ к системнику smile

Автор: RA 19.12.2006, 16:53
Цитата(Nicholas_S @  18.12.2006,  20:14 Найти цитируемый пост)
Но тогда тут вообще ничего не поможет


Цитата(x77 @  18.12.2006,  20:16 Найти цитируемый пост)
нужен комп с дактилоскопической кнопкой включения питания.


Цитата(bartram @  19.12.2006,  14:57 Найти цитируемый пост)
можно сделать блокировку на запуск определенных приложений с помощью глобальных хуков в системе


 smile  LOL  smile 

Автор: Nicholas_S 19.12.2006, 17:10
RA, я думаю твоя идея с LOL'ом тоже бессильна в данной ситуации  smile 

Автор: x77 19.12.2006, 17:17
Nicholas_S, правильно smile в данной ситуации самая подходящая системная тулза для ограничения доступа - это ремень ;)

Автор: Nicholas_S 19.12.2006, 18:29
x77, перетянул руки-ноги-шею - и считай уже не поиграть ни в какой Quake/CS  smile 

Автор: mixan 20.12.2006, 02:55
Спасибо за ответы, хотя я и не имел в виду психологические и воспитательские аспекты  smile .
 Задача ведь простая на самом деле, ребенок не такой уж и хакер, просто знает о реестре немного ну и имеет некоторый арсенал утилиток (нарыл где-то). В общем нужно придумать как запускать прогу, но чтоб она не прописывалась в автозагрузках, начальная идея была подменить как-то службу синхронизации времени, о что-то не выходит, потом запускать из под процесса, но опять что-то возможно не то делаю...

Автор: Nicholas_S 20.12.2006, 03:26
что ж, постебались - и хватит.
mixan, вообщем, если действительно хочется запустить стороннее приложение, то:
1. открываем Delphi, создаем сервис
2. кладем TTimer, ставим нужный интервал (можно проверять время, можно ориентироваться по самому интервалу)
3. ставим опции сервиса как ServiceType = Win32 + Interactive = true + StartType = Boot.
4. инсталлируем сервис как serviceName.exe -install и видим в списке сервисов указанное для сервиса имя. Как подменить другой сервис... хм, кто знает?  smile 

Powered by Invision Power Board (http://www.invisionboard.com)
© Invision Power Services (http://www.invisionpower.com)