Вверх ↑
Этот топик читают: Гость
Ответов: 817
Рейтинг: 52
#1: 2011-09-21 21:29:24 ЛС | профиль | цитата
Добрый день!
Есть элементарный пример сервиса (который взаимодействует с пользователем) замечательно работающий на WinXP
code_25216.txt
Этот же пример "коряво" работает на Win7. Это теперь называется по модному "Интерактивный сервис"
Почитал всякие разные форумы по решению моего вопроса, так ничего хорошего и не нашел.
Человече разделились на две группы, одни говорят что это правильное новшество и службы не должны взаимодействовать с пользователем,
другие говорят что это не правильно и не удобно (я отношусь ко вторым )
Исходя из того что мы имеем, возникает вопрос.
Мне необходимо запустить программу которая должна работать на протяжении всего сеанса работы пользователя.
При этом необходимо что бы продвинутый пользователь не мог убить процесс в системе (любителям покричать что это вирус - не кричите, не вирус)
Первое что приходит на ум, это сделать сервис, но главная засада в том, что при определенных событиях, программа выдает
пользователю уведомления, а в Win7 это работает "коряво"
Знатоки, кто что посоветует, как быть в такой ситуации?

P/S/
Не предлагайте запускать две программы которые будут мониторить друг друга, я считаю что это большие костыли, а не решение вопроса.
------------ Дoбавленo в 21.29:
Вот как выглядит сообщение в Win 7 (картинка с sql.ru т.к. сам сейчас на WinXP)
http://www.sql.ru/forum/actualfile.aspx?id=9747504
карма: 1

0
файлы: 1code_25216.txt [340B] [174]
Гость
Ответов: 17029
Рейтинг: 0
#2: 2011-09-21 21:55:51 правка | ЛС | профиль | цитата


Редактировалось 2 раз(а), последний 2025-01-11 00:12:59
карма: 0

0
Ответов: 817
Рейтинг: 52
#3: 2011-09-22 08:44:16 ЛС | профиль | цитата
г. gektor писал(а):
А что мешает убить сервис?

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

В любом случае представьте себе ситуацию в которой я решил отказаться от сервиса, сделал простую программу без формы которая должна запускаться автоматически и работать на протяжении всего сеанса работы пользователя. Как это сделать? Я на вскидку вижу два варианта - это прописать программу в Run реестра или положить ее в папку "автозагрузка"
Что при первом, что при втором способе программа будет запускаться с правами того пользователя с которым она должна взаимодействовать, а это означает что даже обычный "Гость" сможет ее убить в процессах - вот оно как.

Товарищи, прощу не предлагать костылей и не выяснять "что мешает убить процесс", очень нужен ваш ДЕЛЬНЫЙ совет.
Если есть доп вопросы по существу, готов ответит на них.
карма: 1

0
Разработчик
Ответов: 26305
Рейтинг: 2146
#4: 2011-09-22 08:50:45 ЛС | профиль | цитата
-= DriveR =- писал(а):
а в Win7 это работает "коряво"

Вот этот момент я не понял вообще, что значит "коряво" в прямом смысле, и что должно быть
карма: 22

0
Ответов: 817
Рейтинг: 52
#5: 2011-09-22 09:17:54 ЛС | профиль | цитата
Коряво взято в кавычки
Должно быть то, что программа работающая как сервис, по определенному событию выдает пользователю сообщение
Вот как только это сообщение появляется, то у пользователя выскакивает то, что нарисовано (картинка) в первом посте, а не само сообщение
Это специфика новой винды, все сервиссы работают в отдельном сеансе (в нулевом), поэтому не могут взаимодействовать с пользователем на прямую.
Мне необходимо от этого избавиться и сделать так, как это работало в WinXP
карма: 1

0
Ответов: 3889
Рейтинг: 362
#6: 2011-09-22 10:15:20 ЛС | профиль | цитата
nesco писал(а):
что значит "коряво

Тоже интересно, Message не показывает, что ли...

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

Что касается интерактивности сервиса, то сервис на то и сервис, чтобы работать незаметно. Если очень нужно, с помощью сервиса поддерживайте запущеннымзапускайте отдельное приложение с интерфейсом пользователя, которое будет отвечать за интерфейс, с какими угодно правами, кстати. Да и запустить с правами системы можно не только сервис, есть и другие способы запуска.

Этих способов масса, но, в силу невероятного интереса к этой теме местных хацкеров-зловредописателей, от подсказок, пожалуй, воздержусь.
------------ Дoбавленo в 10.15:
-= DriveR =- писал(а):
что нарисовано (картинка) в первом посте

Нет там ничего для тех, у кого нет cookies от sql.ru, защита от прямых ссылок у них.
карма: 1

0
Ответов: 4664
Рейтинг: 767
#7: 2011-09-22 14:07:10 ЛС | профиль | цитата
Чтобы увидеть картинку, нужно зайти на http://www.sql.ru/forum, поклацать по темах, а затем вновь попытаться посмотреть картинку.
карма: 26

0
Ответов: 817
Рейтинг: 52
#8: 2011-09-22 14:14:14 ЛС | профиль | цитата
1nd1g0 писал(а):
Message не показывает, что ли...

показывает, но не в том сеансе в котором работает пользователь, а в нулевом
1nd1g0 писал(а):
Если у пользователя нет прав администратора, а у Вас - есть, то можно ими воспользоваться для ограничения пользователя нежелательных действиях средствами системы

Просветите админа, как запретить пользователю закрывать процесс который он же и запустил?
1nd1g0 писал(а):
с помощью сервиса поддерживайте запущеннымзапускайте отдельное приложение с интерфейсом

Так в том то и дело, что это тоже считается интерактивным сервисом и возникают такие же грабли (об этом я подумал в первую очередь прежде чем сюда писать)
1nd1g0 писал(а):
Да и запустить с правами системы можно не только сервис, есть и другие способы запуска.

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

карма: 1

0
Ответов: 498
Рейтинг: 39
#9: 2011-09-22 15:12:13 ЛС | профиль | цитата
Netspirit писал(а):
Чтобы увидеть картинку
можно просто обновить страницу.
карма: 0

0
Разработчик
Ответов: 26305
Рейтинг: 2146
#10: 2011-09-22 15:56:59 ЛС | профиль | цитата
-= DriveR =-, а чем не устраивает фоновое приложение
карма: 22

0
Ответов: 817
Рейтинг: 52
#11: 2011-09-22 16:52:51 ЛС | профиль | цитата
nesco писал(а):
а чем не устраивает фоновое приложение

-= DriveR =- писал(а):
Мне необходимо запустить программу которая должна работать на протяжении всего сеанса работы пользователя.
При этом необходимо что бы продвинутый пользователь не мог убить процесс в системе

-= DriveR =- писал(а):
В любом случае представьте себе ситуацию в которой я решил отказаться от сервиса, сделал простую программу без формы которая должна запускаться автоматически и работать на протяжении всего сеанса работы пользователя. Как это сделать? Я на вскидку вижу два варианта - это прописать программу в Run реестра или положить ее в папку "автозагрузка"
Что при первом, что при втором способе программа будет запускаться с правами того пользователя с которым она должна взаимодействовать, а это означает что даже обычный "Гость" сможет ее убить в процессах - вот оно как.

карма: 1

0
Разработчик
Ответов: 26305
Рейтинг: 2146
#12: 2011-09-22 17:18:54 ЛС | профиль | цитата
Ага, значит вариант с фонвым приложением ты уже пробовал
На мой взглд, вариант 1nd1g0 самый простой и удачный
1nd1g0 писал(а):
Если очень нужно, с помощью сервиса поддерживайте запущенным\запускайте отдельное приложение с интерфейсом пользователя

Создал сервис, и он будет следить за твоим фонвым приложением, убил фонвое приложение, и сервис его запустил снова. На этапе отладки я у себя такое делал, работает безотказно, еще и лог сервису прицепил, он и писал, когда был обнаружен перезапуск приложения. Другие полезные мысли на ум не идут. Пытаться обойти Service Control Manager средствами HiAsm'a не получится, а в Семерке они его еще и ужесточили, скорее всего связано это с попыткой защитить систему от вредоносных сервисов
карма: 22

0
Ответов: 817
Рейтинг: 52
#13: 2011-09-22 21:16:48 ЛС | профиль | цитата
nesco писал(а):
Создал сервис, и он будет следить за твоим фонвым приложением

-= DriveR =- писал(а):
Так в том то и дело, что это тоже считается интерактивным сервисом и возникают такие же грабли (об этом я подумал в первую очередь прежде чем сюда писать)

Чувствую что нет решения моего вопроса
Опять Microsoft поднас...л

Всем спасибо, буду думать как сделать что бы пользователь не мог закрыть процесс
------------ Дoбавленo в 21.16:
Думаю что придется делать однозначно фоновое приложение, тогда встает вопрос о том что бы его спрятать в процессах

По службам вроде нашел решение, завтра попробую и отпишу о результатах
http://www.videonet.ru/forum/viewtopic.php?t=1364
http://social.technet.microsoft.com/wiki/contents/articles/event-id-7030-basic-service-operations.aspx
карма: 1

0
Разработчик
Ответов: 26305
Рейтинг: 2146
#14: 2011-09-22 23:15:39 ЛС | профиль | цитата
Первое не шибко помогает, мне не помогло никак, у меня стоит в самом нижнем положении, и все равно вызываается предупреждение
карма: 22

0
Ответов: 817
Рейтинг: 52
#15: 2011-09-23 10:59:48 ЛС | профиль | цитата
-= DriveR =- писал(а):
отпишу о результатах

Не работает не фига
Вот уж точно Microsoft подна...л

Ладно попробую скрыть процесс из диспетчера задач, вроде на форуме это обсуждалось
карма: 1

0
Сообщение
...
Прикрепленные файлы
(файлы не залиты)