通常,开机自动运行程序会作用于每次启动Windows时,但还有一种情况例外——就是设置好之后只在下次开机时自动运行一次,以后开机就不再运行了,其最常见的应用是程序更新或系统升级,在系统重启前执行安装,重新启动系统后进行自动配置并使设置生效。如果我们要自行实现一些一次性自动运行的任务,就需要修改注册表或使用第三方工具软件。
实现开机自动运行的方式很多,我们之前也介绍了不少,比如向Windows“启动”程序组添加程序的快捷方式,在注册表的几处Run项下添加自启动程序项目等(图1),这里就不再赘述了。
一次性自动运行的基本方式与自动运行类似,只是要添加的注册表项变成了“RunOnce”。顾名思义,RunOnce就是指一次性运行,它在注册表的“HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\Windows\CurrentVersion\RunOnce”,该项下的键值只会在Windows下次启动时运行程序。通常,RunOnce下的键值用于删除系统文件或锁定的文件,某些软件也可以用它在重新启动时执行一些更改操作。
向RunOnce添加一个程序非常简单,只需在上述注册表RunOnce项下创建一个新的字符串值,并提供要为该值运行的程序完整路径即可(图2)。
如果不愿意冒险手动修改注册表,可以使用RunItOnce免费工具(https://www.raymond.cc/blog/download/did/1337/)。运行该软件会打开对话框,选择下次启动时一次性运行的程序(接受.exe、.cmd、.bat文件或Windows快捷方式)(图3)。单击“打开”后,弹出“RunitOnece Succeed for <某程序>”提示,表示一次性自动启动项添加完成。
但是,此工具只能添加,不能编辑或删除RunOnce键值,如果添加有误需要删除,可下载一个注册表REG文件,运行该文件可删除RunItOnce创建的任何键值。
当Windows自动启动应用程序时,有太多不同的方法来加载,很难跟踪。如果需要理清Windows运行时正在启动什么,以及从哪个位置启动,可使用Sysinternals Autoruns自启动管理实用程序(图4)。