1

Я хочу запустить exe или bat файл при закрытии окна? Я хочу отключить несколько дисков, которые монтируются моим приложением, когда пользователь выключает систему.

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

У меня есть несколько ссылок, которые показывают, что мы можем создать запись в групповой политике для выполнения программы при закрытом окне. Я не уверен, как я могу добавить запись в Group ploicy с помощью кода C++.

Опять же, групповая политика не работает с Win Vista. Любой другой лучший подход?

5 ответов5

2

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

Использование Admin Tools | Планировщик задач Вы можете запланировать задачу на основе зарегистрированных событий в журнале системных событий. Событие выключения / перезапуска связано с журналом системных событий с источником USER32, с идентификатором события 1074. Когда журнал событий обновляется этой информацией, должна быть запущена запланированная задача. Я проверял это на коробке на работе, и она работала просто отлично, но я администратор в домене и не уверен, что у вас возникнут проблемы с разрешением или что-то в этом роде.

0

Что вы можете сделать, это написать свой командный файл, чтобы включить все команды, которые вы хотели бы выполнить непосредственно перед выключением, а затем в качестве последней команды включите shutdown.exe в синтаксис, подобный следующему: shutdown.exe -s -t 45. В этом случае я говорю команде завершить работу системы с ключом -s, а затем ключ -t говорит, что это нужно сделать за 45 секунд. Возможно, вам придется использовать ключ -f, чтобы принудительно закрыть любую программу, если она не позволит завершить работу системы. Если вы используете Windows XP, Vista или 7, команда выключения уже доступна. Что-нибудь старше, однако, вам, возможно, придется скачать его с сайта Mircrosoft. Я надеюсь эта информация поможет!

Danbo

0

В планировщике задач Windows создайте базовую задачу, например:

Нажмите здесь, чтобы открыть образ диспетчера задач Windows

0

Поскольку в этой версии Vista не установлен GPEDIT.MSC, возможно, найдите записи, которые GPEDIT обычно делает для сценария завершения работы, и посмотрите, существуют ли эти разделы реестра на вашем Vista Home?

У меня не работает Vista, но я провел предварительный тест на Server 2003. Я запустил REGMON и открыл GPEDIT.MSC, затем отредактировал скрипт завершения работы. Ключ изменения был расположен здесь:

HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\Windows\CurrentVersion\Group Policy\State\Machine\Scripts\Shutdown

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

0

Напишите программу, которая имеет окно только для сообщений (HWND_MESSAGE), затем обработайте: WM_ENDSESSION , затем запустите ваш файл bat или сделайте то, что вы хотите.

Windows: http://msdn.microsoft.com/en-us/library/ms632599(VS.85).aspx

WM_ENDSESSION: http://msdn.microsoft.com/en-us/library/aa376889(VS.85).aspx

Всё ещё ищете ответ? Посмотрите другие вопросы с метками .