Вы можете использовать этот скрипт PowerShell:
$query = New-Object System.Management.WqlEventQuery ("__InstanceCreationEvent", (New-Object TimeSpan (0, 0, 1)), 'TargetInstance isa "Win32_Process"')
$watcher = New-Object System.Management.ManagementEventWatcher
$watcher.Query = $query
$watcher.Options.Timeout = [System.Management.ManagementOptions]::InfiniteTimeout
$curProc = $null
While ($true) {
$e = $watcher.WaitForNextEvent().TargetInstance
If ($e.Name -eq 'firefox.exe' -and ($curProc -eq $null -or $curProc.ExitTime -ne $null)) {
$curProc = Start-Process 'cmd' -Argument '/c C:\path\to\script.bat' -PassThru -WindowStyle Hidden
}
}
Он использует WMI для наблюдения за созданием новых процессов, и, если процесс принадлежит firefox.exe
, он запускает скрытую командную строку (если только она не запущена с предыдущего запуска Firefox).
Если вы хотите, чтобы новый запуск командного файла запускался при каждом запуске Firefox, используйте этот более простой скрипт:
$query = New-Object System.Management.WqlEventQuery ("__InstanceCreationEvent", (New-Object TimeSpan (0, 0, 1)), 'TargetInstance isa "Win32_Process"')
$watcher = New-Object System.Management.ManagementEventWatcher
$watcher.Query = $query
$watcher.Options.Timeout = [System.Management.ManagementOptions]::InfiniteTimeout
While ($true) {
$e = $watcher.WaitForNextEvent().TargetInstance
If ($e.Name -eq 'firefox.exe' ) {
Start-Process 'cmd' -Argument '/c C:\path\to\script.bat' -WindowStyle Hidden
}
}
Если вы не хотите, чтобы окно подсказки было полностью скрыто, просто измените -WindowStyle Hidden
на -WindowStyle Minimized
.
Сохраните выбранный сценарий PowerShell как файл .ps1
. Чтобы запустить его при входе в систему, поместите пакетный файл, содержащий это, в папку автозагрузки:
powershell -file 'C:\path\to\powershellScript.ps1' -executionpolicy bypass -windowstyle Hidden