开篇:润墨网以专业的文秘视角,为您筛选了一篇为Windows 7任务计划保驾护航范文,如需获取更多写作素材,在线客服老师一对一协助。欢迎您的阅读与分享!
【挑战题描述】
在日常使用中我们经常借助任务计划来自动完成很多任务,比如自动备份、后台升级等,但是在windows 7的任务计划实际部署中,大家可能经常发现明明执行的程序或者批处理准确无误,添加到任务计划后却无法执行。请教高手如何确保任务计划不失效。
【解题思路】
任务计划是指在特定的条件下(如用户登录、系统启动时),执行特定的程序(或批处理、脚本),默认任务计划是在后台自动运行的。因此如果任务计划失效,主要的原因有两个:一是调用的程序或者批处理代码出错,导致任务计划无法运行指定程序。二是运行账户权限不足,导致任务计划没有足够的权限运行指定的程序。因此解题的思路主要就从程序(或批处理)本身和账户权限的角度入手解决问题。
【解题方法】
解决程序本身错误引发的问题
因为在将程序(或者批处理)添加到任务计划运行的时候,我们一般都会预先运行一下,因此这里程序本身错误大多是由于没有指定正确的路径造成的。比如下面这样的一个批处理放置在桌面:
echo "test is ok!" >>test.txt
当我们在桌面直接双击或者在命令提示符运行的时候,批处理都会在当前目录下生成test.txt文件,这说明批处理代码是没有错误的。不过当我们添加到任务计划,重启后打开“控制面板管理工具”,依次展开到“系统工具任务计划程序任务计划程序库”,可以看到添加的任务计划提示“正在运行”,但是却没有生成指定的“test.txt”文件(图1)。
为什么会出现这个问题?原来我们在桌面直接双击或者在命令提示符运行上述批处理时,系统会自动将当前目录指定为“test.txt”文件的存放目录,上述批处理运行起来并不会有任何问题。但是当我们将这个批处理添加到任务计划运行时,任务计划无法自动指定执行批处理时所需的起始位置,导致上述批处理无法生效。因此解决的方法是重新为批处理指定正确的路径,比如改成下面的代码即可:
echo "test is ok!" >>d:\test.txt
此外,任务计划批处理本身也必须指定调用的具体路径。比如调用的是桌面快捷方式,如果右击快捷方式选择“属性快捷方式”,这里的“起始位置”如果置空,在任务计划中运行时也会出错,解决方法同样是要指定具体的快捷方式(图2)。
解决权限不足引发的问题
大家知道在Windows 7中如果要运行带有盾牌标志的程序(即使你是管理员身份登录),系统就会弹出UAC(用户账户控制)提示,需要我们手动提权才能运行这些程序。因此如果任务计划执行的(或者任务计划执行批处理、脚本调用的)是带有盾牌标志的程序,系统的UAC就会启动拦截,从而导致任务计划无法在后台自动完成。
解决的方法自然是为执行程序提权,在任务计划窗口选中无法运行的任务,在常规选项下,运行用户选择本机管理员账户,单选“在用户登录时运行”,然后勾选“使用最高权限运行”,这样下次启动上述任务时就没有UAC的拦截了(图3)。
不过要注意的是,在Windows中有多个“会话”机制,每个用户登录都会新生成一个会话,每个会话中运行不同的桌面和程序,它们之间是独立的。我们可以启动任务管理器,单击 “查看选择列勾选会话ID”,这样在进程列表就可以显示每个进程所生成的会话(图4)。
如果在常规属性中选择“不管用户是否登录都要运行”这个选项(或者运行账户是SYSTEM),任务计划就运行在会话0(当前账户登录则为会话1)。在0会话中,我们无法在当前桌面看到运行的程序,因此任务计划如果要运行的是GUI程序,如启动迅雷、QQ,就必须选择当前用户运行,反之则可以选择SYSTEM运行。只要点击“更改用户和组”,然后在“输入要选择的对象名称”下输入“SYSTEM”,点击“确定”后就可以以SYSTEM身份运行任务计划了(图5)。