Я хочу выполнить exe или bat-файл когда закрытие окна? Я хочу размонтировать немного дисков, которые смонтированы моим приложением, когда пользовательское завершение работы система.
Для этого я должен выполнить другой exe на завершении работы, которое разъединит диски, смонтированные моим приложением.
Я получил немного ссылок, который показывает, что мы можем создать запись в Групповой политике для выполнения программы в то время как закрытие окна. Я не уверен, как я могу добавить запись в Группу ploicy кодом C++.
Снова, групповая политика не работает с Победой Vista. Какой-либо другой лучший подход?
Запишите программу, которая имеет окно только для сообщения (HWND_MESSAGE
), затем обработайте: WM_ENDSESSION
, затем выполните свой bat-файл или сделайте то, что Вы хотите.
Windows: http://msdn.microsoft.com/en-us/library/ms632599 (по сравнению с 85) .aspx
WM_ENDSESSION: http://msdn.microsoft.com/en-us/library/aa376889 (по сравнению с 85) .aspx
В дополнение к записи Вашего собственного пакетного файла, чтобы закрыться и сделать, что Вы хотите, Вы можете планировать задачу сделать то же самое, таким образом, Вы не должны были бы помнить нажимать ярлык для завершения работу специального пути или чего-либо.
Используя Административные средства | Планировщик задач можно запланировать задачу на основе зарегистрированных событий в журнале системного события. Событие завершения работы/перезапуска связано с журналом Системного события с USER32 как источник, идентификатор события 1074. Когда журнал событий обновляется с той информацией, запланированная задача должна быть запущена. Я протестировал это на поле на работе, и она работала просто великолепно, но я - администратор в домене и не уверенный, если Вы столкнулись бы с проблемами разрешения или чем-то.
Так как та версия Vista не имеет GPEDIT.MSC установленным, возможно, находит, какие записи GPEDIT обычно делал бы для сценария Завершения работы и видел бы, существуют ли те ключи реестра на Вашей Vista Домой?
Я не имею Vista, работающей здесь, но сделал предварительный тест на Сервере 2003. Я запустил REGMON и открыл GPEDIT.MSC, затем отредактировал сценарий Завершения работы. Ключевое изменение было расположено здесь:
HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\Windows\CurrentVersion\Group Policy\State\Machine\Scripts\Shutdown
Если та ключевая древовидная структура существует на Vista, это может просто быть вопрос создания записи на машине, которая действительно имеет редактора групповой политики, экспортирует ключ и импортирует его в Vista. Чистое предположение, я не попробовал это.
То, что можно сделать, записать пакетный файл для включения всех команд, которые требуется выполнить только до закрытия и затем поскольку последняя команда включает shutdown.exe в sytax подобное этому: shutdown.exe-s-t 45. В этом случае я говорю команде завершать работу системы с переключателем-s, и затем переключатель-t говорит, чтобы сделать это через 45 секунд. Вы, возможно, должны использовать переключатель-f, чтобы вынудить любую программу закрыться, если они предотвратят систему для завершения работу. При выполнении Windows XP Vista или 7, команда завершения работы уже доступна. Что-либо более старое, тем не менее, Вам, вероятно, придется загрузить его с сайта Mircrosoft. Я надеюсь, что эта информация помогает!
Danbo