Windows XP下很多朋友都在使用“关机脚本+一键批处理”来自动清理垃圾文件,不过这个招数到了Vista下却不灵了,虽然批处理命令仍然可以执行,但却发现很多垃圾文件并没有被清理掉。这其中的原因是什么?在Vista下又该如何自动清理垃圾文件?本文就为大家解决这些难题。
一、 清理垃圾命令为何在Vista下失效
对于自动清理垃圾的批处理命令相信很多朋友都知道,其实就是一大堆删除命令的集合,大家也可以到http://www.shudoo.com/bzsoft下载自动删除垃圾的批处理文件。由于Vista采用NTFS格式的分区,文件(特别是系统目录下文件)的删除都要取得权限才能完成。由于批处理脚本中很多命令要删除的是系统目录下的文件(比如“del /f /s /q %systemdrive%*.log”命令,在试图删除“C:\Windows\SoftwareDistribution\DataStore\Logs\edb.log”时),系统会给出拒绝访问的提示,原因就是由于权限不足(如图1)。
提醒:网上很多垃圾文件清理脚本并不一定适合每个人,因为这也有可能误删除重要文件。使用前应该了解清楚脚本的作用。
因为出于安全考虑,在Vista中即使我们以系统管理员身份登录系统,但在实际操作中仍然只是拥有标准账户的权限。关机脚本是通过命令提示符加载的,默认情况下是以标准用户身份运行,所以有些清理垃圾命令由于权限不足无法完成文件的删除。
二、Vista下如何自动清理垃圾
知道问题产生的原因后,解决问题的方法当然是提高权限运行批处理命令。如果是手动清理垃圾,我们只要将清理脚本保存为BAT文件,然后右击它选择“以管理员身份运行”即可。不过,手动执行会遭遇UAC“阻截”。我们的目的是要自动执行批处理命令,因此我们要绕开UAC让命令自动执行。关闭UAC当然不明智,这里可以借助任务计划完成命令自动执行。
董师傅提示:对于系统目录下的一些重要文件,默认情况下只有内置的SYSTEM和ADMINISTRATOR用户拥有完全控制权限。如果“以管理员身份运行”后仍然无法删除文件,这时就要将文件所有权更改为当前登录用户、同时设置权限为“完全控制”。所有权和权限设置可以借助系统的takeown和cacls命令获得,命令具体使用方法请参考Windows的“帮助与支持”。
步骤1:将网上下载的脚本保存为“clean.bat”,放置在c:\。接着单击“开始→所有程序→附件→系统工具→任务计划程序”,启动任务计划后单击“创建基本任务”启动新建任务计划向导。
步骤2:根据向导的提示,建立一个名为“clean”的任务,在触发器中选择一个无法执行的时间,比如设置为2006-1-1执行(这样这个任务实际是不会被自动执行的)。操作选择“启动程序”,单击“浏览”选择运行的程序是“c:\clean.bat”。
步骤3:完成后勾选“当单击完成时打开此任务属性的对话框”,将打开的对话框切换到“常规”选项卡。在安全选项下单击“更改用户和组”,选择系统管理员账户运行该任务,同时勾选下方的“使用最高权限运行”(如图2)。这样一旦运行任务计划,它就拥有管理员权限了。
步骤4:启动记事本新建一批处理cl.bat,放置在c:\,代码如下:
Rem 使用任务计划命令启动清除垃圾,/run 表示运行,/tn 后跟任务名称
Schtasks /run /tn clean
步骤5:单击“开始”→“运行”,输入“gpedit.msc”启动“组策略编辑器”。依次展开“计算机配置→Windows设置/脚本(启动/关机)”,双击右侧窗格的“关机”,在打开的窗口单击“添加”,将“c:cl.bat”添加到关机脚本。
这样,以后每次关机,系统会自动调用这个批处理命令激活上述任务计划清除垃圾。由于我们已经将任务运行设置为“使用最高权限运行”(与右键“以管理员身份运行”等效,但不会弹出UAC提示),这样运行的就是管理员权限,可以有效地删除系统垃圾文件。
由于Vista的NTFS分区的特性,一些原来在Windows XP下畅通无阻的操作如果在Vista下遭遇故障,大家一定看看是否因为操作权限问题。解决问题的方法是提升操作权限,如果需要自动提升权限运行则可以借助文中介绍的任务计划法。
……