有没有办法在每次 Windows 更新完成时运行特定的脚本(即重新启动后或不需要重新启动的更新后)?
我的应用程序遇到MSCOMCTL.OCX 更新,并且似乎每次 Windows Update 更新时,都要求用户应用我的修复脚本。
编辑:适用于 Windows 7 及更高版本。
答案1
我认为,最终正确的答案是“修复您的应用程序”。但是,您可能由于多种原因无法修复。话虽如此...
哪个版本的 Windows?在 Vista/2008 及更高版本中,您可以将计划任务与特定事件 ID 绑定。在系统事件日志中,来自 WindowsUpdateClient 的事件 ID 19 表示WUA 更新安装成功。
启动任务计划程序管理单元taskschd.msc
。右键单击“任务计划程序库”,然后选择“创建基本任务...”。
在下一个屏幕中,输入名称和简短描述,然后单击“下一步”。
单击标有“当记录特定事件时”的单选按钮,单击“下一步”。
选择“系统”作为日志,“WindowsUpdateClient”作为来源,“19”作为事件ID,单击“下一步”。
单击“启动程序”单选按钮,单击“下一步”。
提供“修复”脚本或可执行文件的路径,单击“下一步”。
检查您的设置是否正确,然后单击“完成”。
现在,您将看到库中列出的包含您的设置的计划任务。
这是一个仅使用 的命令行示例C:\Windows\system32\schtasks.exe
,XPath 过滤器语法花了我一段时间。看来任务计划程序仅使用 XPath 的子集。
REM Create scheduled task triggered by WindowsUpdateClient event ID 19
schtasks /Create /TN "Post WUA Update Install" /TR "C:\scripts\your.fix.cmd" /SC ONEVENT /EC System /MO "*[System[Provider[@Name='Microsoft-Windows-WindowsUpdateClient'] and (EventID=19)]]"