20

I want a program to start each time another one is starting.

Here's an example: Each time I start Google Chrome, I would like iTunes to start at the same time.

Also, I want it to start when I click a link in my browser that starts a program (like "view in iTunes on the iTune website).

I do not want to have to do with a .bat file.

I am running on Windows 7

2
  • Can you clarify. The first option is that if you open Chrome, itunes starts too. But the second option - when you click a link that opens itunes, you want something else to open as well?
    – Paul
    Apr 23, 2014 at 23:40
  • Those are just examples, basically I want to start mutiple programs when I want to start one or another program wants to start it
    – TheBird956
    Apr 23, 2014 at 23:45

2 Answers 2

29

You could probably set up specific pairs of apps to run using the registry, and altering what deals with mimetypes. However another more generic way, and far more complex, is to use the Task Scheduler. The task scheduler can start an app based various types of triggers, including Event Log entries.

So all we need is to ensure an event is created whenever an application starts, and then create a scheduled task to start whenever the event is logged.

Enable 'application start' logging

  1. Start and enter secpol.msc into the Run box
  2. Navigate to Local Policies/Audit Policy
  3. Double Click Audit process tracking and enable Success

Now, if you start any application, if you look in Event Viewer / Security Log you will see a Process Creation event 4688 each time an application is started.

Create scheduled task based on trigger

  1. Open Task Scheduler and create a new task
  2. On the General Tab, give the task a name
  3. On the Triggers tab, create a new trigger, and choose On an event as the trigger
  4. Choose Custom, and click Edit Event Filter
  5. Change the Filter settings as follows:

Task filter

Now Switch to the XML tab, and enable edit query manually

You will see the following

<QueryList>
  <Query Id="0" Path="Security">
    <Select Path="Security">
      *[System[Provider[@Name='Microsoft-Windows-Security-Auditing'] and Task = 13312 and (band(Keywords,9007199254740992)) and (EventID=4688)]] 
    </Select>
  </Query>
</QueryList>

Now you just need to add the application you want to cause the trigger. For example, this one uses notepad.exe as the trigger:

<QueryList>
  <Query Id="0" Path="Security">
    <Select Path="Security">
     *[System[Provider[@Name='Microsoft-Windows-Security-Auditing'] and Task = 13312 and (band(Keywords,9007199254740992)) and (EventID=4688)]] 
   and 
     *[EventData[Data[@Name='NewProcessName'] and (Data='C:\Windows\System32\notepad.exe')]]
    </Select>
  </Query>
</QueryList>

Click Ok for this, then Ok to close the trigger dialog box.

Now choose the Action tab, and create a new action, that is Start a Program, and browse to the app you want to start along with the trigger application.

14
  • I dont have anything named secpol.msc. I made a small reserach and I think its because it is not available in Windows 7 Home Premium. Is there another way?
    – TheBird956
    Apr 24, 2014 at 2:30
  • The audit policy needs to be changed for this to work, and it is absent from W7HP. There are a few guides out there for installing gpedit.msc on W7HP which you might want to try. You can edit the audit policy with this too, in Computer Configuration/Windows Settings/Security Settings/Audit Policy
    – Paul
    Apr 24, 2014 at 3:19
  • @TheBird956 Did you manage to get it to work?
    – Paul
    Jul 3, 2014 at 8:09
  • 3
    To set the trigger to program/process exit/termination/close instead of start/create, this XML for the event filter worked for me: <QueryList> <Query Id="0" Path="Security"> <Select Path="Security"> *[System[Provider[@Name='Microsoft-Windows-Security-Auditing'] and (band(Keywords,9007199254740992)) and (EventID=4689)]] and *[EventData[(Data='PATH TO THE DESIRED EXE')]] </Select> </Query> </QueryList> Oct 25, 2017 at 21:47
  • 2
    On Windows 10, @Name='NewProcessName' needs to be changed to @Name='ProcessName'
    – RobG
    Apr 14, 2020 at 3:43
1

I am sure that Paul's answer above might work for most of people, however for some reason I could not get it to work with my program.

When specifying the path for Notepad.exe, the Task was created successfully; when I changed the path to the one of the program I was intending to use, I always got An event filter for a trigger is not valid error when pressing OK at the end of the task creation. Consider that the event filter looks exactly like Paul's (I generated it myself following his procedure) with the exception that my program sitted in the Program Files (x86) folder.

I eventually solved my problem by installing an external software, Bill's Process Manager. Kudos to this StackExchange answer for it.

1
  • Same error message here. "An event filter for a trigger is not valid". My program was in a folder outside Programs and outside Windows. Probably the problem is not in the path. May 3, 2022 at 14:26

You must log in to answer this question.

Not the answer you're looking for? Browse other questions tagged .