2012-02-03 5 views
3

Я пишу (win7) программное обеспечение киоска, и я хочу запланировать «выключение» летучей мыши, чтобы запускаться, когда мое приложение выходит (Crashed, «Hacked» или Normal Exit) под определенной учетной записью пользователя с помощью Планировщик заданий.Запуск планировщика заданий Завершение триггера

Как я могу создать приложение закрыто триггер хотя?

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

EDIT: В настоящее время приложение загружается под чрезмерно ограниченного профиля с «RUNAS» директивой, выдающей себя в пользователе с правами администратора. Если расписание задачи может быть запущено, я также могу запустить этот командный файл из учетной записи администратора при закрытии приложения.

ответ

1

Возможно, вы могли бы создать приложение для киоска и создать глобальный мьютекс, а приложение-монитор ждать мьютекса. Приложение-монитор может быть услугой, поэтому вам не нужно беспокоиться о ее запуске из вашего процесса. Когда ваше приложение прекратится, монитор получит право собственности на мьютексы, и в качестве бонуса, если ваш процесс завершится неожиданно (т. Е. Не будет когда-либо выпускать мьютексы должным образом), тогда у монитора появится AbandonedMutexException. Таким образом, вы узнаете, было ли это нормальное закрытие, или сбой/убийство. Вы можете запустить приложение-монитор под учетной записью с необходимыми привилегиями, чтобы выполнить любую работу по отключению.

0

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

1

У меня есть идея.

При запуске приложения вы создаете график выключения через 1 минуту. И в вашем приложении вы можете установить timmer, чтобы периодически откладывать расписание. После того, как ваше приложение опустится, и никто не задерживает расписание, поэтому выключение компьютера. Также вы должны удалить расписание на нормальном выходе

+0

хорошее предложение, но если theres «метод выключения задержки» в Pinvoke (или я что-то пропустил), команда shutdown должна быть отменена и перезапущена. Основное приложение может быть полностью ответственным за себя, что упрощает внедрение. Хотя я не уверен в перезапуске команды, –

+0

[edit timeout] - добавление функциональности в один (открытый) процесс меня беспокоит. Также отсутствие видимости текущего отключения от C# может привести к случайному отключению приложения. –

Смежные вопросы