我希望每次启动一个程序时启动另一个程序。
举个例子:每次我启动 Google Chrome 时,我希望 iTunes 也同时启动。
另外,我希望它在我单击浏览器中启动程序的链接时启动(例如“在 iTunes 网站上查看”)。
我不想与.bat 文件有任何关系。
我在 Windows 7 上运行
答案1
您可能可以使用注册表设置要运行的特定应用对,并更改处理 mimetypes 的内容。但是,另一种更通用且更复杂的方法是使用任务计划程序。任务计划程序可以根据各种类型的触发器(包括事件日志条目)启动应用。
因此,我们需要确保每次应用程序启动时都会创建一个事件,然后创建一个计划任务,每次记录事件时启动该计划任务。
启用“应用程序启动”日志记录
- 开始并进入
secpol.msc
运行框 - 导航地方政策/审计政策
- 双击审计过程追踪并启用
Success
现在,如果你启动任何应用程序,如果你查看事件查看器/安全日志,你会看到流程创建4688
每次启动应用程序时都会发生事件。
根据触发器创建计划任务
- 打开任务计划程序并创建新任务
- 在一般的Tab,为任务命名
- 在触发器选项卡,创建新触发器,然后选择在一次活动中作为触发器
- 选择风俗,然后点击编辑事件过滤器
- 更改筛选设置如下:
现在切换到XML选项卡,然后启用手动编辑查询
您将看到以下内容
<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>
现在您只需添加要触发触发器的应用程序。例如,此应用程序notepad.exe
用作触发器:
<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>
单击Ok
此按钮,然后Ok
关闭触发对话框。
现在选择行动选项卡,并创建一个新操作,即Start a Program
,并浏览到您想要与触发应用程序一起启动的应用程序。
答案2
我确定保罗的回答上述方法可能对大多数人有用,但是由于某种原因,我无法让它与我的程序一起工作。
当指定 Notepad.exe 的路径时,任务创建成功;当我将路径更改为我打算使用的程序的路径时,An event filter for a trigger is not valid
在任务创建结束时按 OK 时总是出错。请考虑事件过滤器与 Paul 的完全一样(我按照他的程序自己生成的),除了我的程序位于 Program Files (x86) 文件夹中。
我最终通过安装外部软件解决了我的问题,Bill 的流程管理器. 感谢此 StackExchange 答案为了它。