Я нашел способ через Аудит, который, похоже, работает нормально. Мы пытаемся заставить процесс поднять событие при его запуске, а затем в планировщике заданий на дом в этом событии в качестве триггера для нашего действия.
LATER EDIT: ОК, это действительно создает несколько ложных срабатываний. Действие может срабатывать без выполнения фактически выполненной программы. Поэтому будьте осторожны, работа продолжается.
Перейти к вашему application.exe
, щелкните правой кнопкой> вкладка Свойства> Безопасность> Достижения> вкладка аудита> Изменить
Добавить свое имя пользователя и отметьте папку Traverse/выполнение файла. Нажмите все ОК. Каждое успешное выполнение application.exe
теперь появится в окне просмотра событий. Идите туда, чтобы проверить их:
Просмотр событий> Журналы Windows> Безопасность Вы можете фильтровать текущий журнал для EventID 4663
Вот это событие, как и с моей машины:
попытка была сделана доступ к объекту.
Subject:
Security ID: PC\Redacted
Account Name: Redacted
Account Domain: PC
Logon ID: 0xxxxxxx
Object:
Object Server: Security
Object Type: File
Object Name: C:\Program Files\Some Application\application.exe
Handle ID: 0x1e1c
Process Information:
Process ID: 0x374
Process Name: C:\Windows\explorer.exe
Access Request Information:
Accesses: Execute/Traverse
Access Mask: 0x20
Вы увидите более чем один из них, это не только один-к-одному, один запуск программы = 1 событие. Есть Ручка была открыта, ручка была закрыта событий.
В Планировщик заданий вы должны создать событие, предназначенное для запуска программы.
Создать новую задачу> Триггеры Tab> Новые
Выберите Начало задачи: На событии из раскрывающегося списка.
Нажмите Пользовательский радиокнопка затем Редактировать фильтр ...Кнопка
В XML вкладки клещ Редактировать запрос вручную и вставить что-то подобное в:
<QueryList>
<Query Id="0" Path="Security">
<Select Path="Security">*[EventData[Data[@Name='ObjectName'] and (Data='C:\Program Files\Some Application\application.exe')]]
</Select>
</Query>
</QueryList>
¹
Картины и больше деталей в Quick Development Tips: How to monitor a folder and trigger an action for incoming files, in Windows 7
Как только это будет сделано, все, что осталось - это настроить Действие, программу, которую вы хотите запустить, когда начинается application.exe
, Для меня это был скрипт AutoHotKey - я просто нажал кнопку «Обзор» и перешел к нему.
Теперь, когда я запускаю приложение, я получаю скрипт AutoHotKey, автоматизирующий некоторые начальные шаги. Это не сработало бы для создания командного файла с application.exe & script.ahk
, потому что иногда приложение начинает с открытия файла, иногда его запускает что-то другое или кто знает. Таким образом, независимо от того, как он начинается, происходит сценарий.
¹ Сторона примечания: Вот улов. Этот запрос XPath работает для Data='C:\no\wildcards\allowed.exe'
, но вы будете разочарованы, обнаружив, что вы can't use wildcards or any other kind of matching. Поэтому, если вы хотите выбрать файл, который не перемещает или не меняет имя, это нормально. Но если вы хотите выбрать вновь созданный файл неизвестного имени внутри папки, которую вы смотрите, вы не можете. В лучшем случае вы можете сделать Data='variant1' OR Data='variant2'...