Vista十大使用误区

本文已刊载于《个人电脑》杂志2009年第3期,请勿随意转载

Windows Vista正式发布到现在已经超过了两年的时间,很多人都曾经用过这个操作系统,不过因为对其中的一些功能不太了解,一些人认为Vista中的某些功能的表现是自己无法接受的,往往会换回老版本的Windows。而网上也有很多不太严谨的“性能优化”文章,指导大家如何通过所谓的“优化”,提升系统性能。其实这些内容严格来说并不准确,如果照做,不仅不会提升性能,还有可能让性能更差,甚至遇到更多问题。

本文总结了最常见的十大误区,并会对这些误区进行分析,告诉大家应该如何更理性地面对相应的问题。

1,内存使用率太高

在安装Windows Vista之前,很多人已经通过硬件要求信息了解到这个系统对内存的要求非常高。虽然资料宣称有1 GB内存即可安装Vista,但根据实际使用的经验来看,如果想要流畅运行Vista以及各种常用软件,2 GB内存才是标准配置。

其实现在内存已经卖到了白菜价格,很多人已经有3 GB甚至更多内存,但令很多人感到奇怪的是,不管装了多少内存,似乎Vista总能全部“浪费”掉。并据此断言,Vista的内存管理功能实在是很糟糕,非常耗费内存,是一个糟糕的操作系统。

clip_image002 clip_image004

图1,用Vista的任务管理器的“性能”选项卡查看物理内存的使用情况,左侧是一台4 GB内存64位系统的显示,右侧是一台2 GB内存32位系统的显示,而两台电脑的可用物理内存数量都少得可怜

在解释原因之前,首先要介绍一下上图中三个参数的用途。其中“总数”是指系统中安装的,可以被Windows使用的物理内存的数量;“已缓存”是指物理内存总数中被用做缓存,保存了缓存内容的内存的数量;而“可用”则是指完全没有被使用的物理内存的数量。

其实通过这个例子,不仅不能说明Vista不善于管理内存,浪费了大量内存,反而可以证明,Vista对内存的管理要更合理。毕竟内存就是买来用的,我们安装越来越多的内存,主要是为了能运行更多程序,或者让程序的运行速度更快。然而很多人似乎钻了牛角尖,总是喜欢看到“可用”栏显示出较大的数字,然而如果有太多“可用”内存,表示内存完全没有被操作系统使用,这才是对内存最大的浪费。

在电脑处理数据的典型流程中,共有三个地方可用于存储数据,分别是硬盘、内存,以及CPU的缓存,这三个位置的读写速度按顺序递增,而通常电脑中这三个位置的容量则是按顺序递减。硬盘是用于永久保存数据的设备,运行的程序和要处理的文件都保存在这里。要运行程序或处理数据的时候,系统会将数据从硬盘读入内存,并将内存作为数据的暂存区域。在处理具体的数据时,系统会将内存中的程序代码或文件的一部分读入到CPU的缓存中,并进行处理,同时会将处理后的数据重新写入到内存中。而在处理完毕后,所有数据又会被重新写入到硬盘上。

其实很多人都了解这个过程,而很多人也知道,为了能够同时运行更多程序,或者让程序的效率更高,往往需要使用更多的内存,这样系统才不需要频繁地从硬盘中读取数据,或者将数据写入到硬盘。其实这个过程可以理解为书柜和书桌。书柜中保存了大量书籍,然而要看书的时候,往往需要把书从书柜中拿到书桌上看。如果书桌不够大,而我们又需要同时看很多书,这时候就需要频繁地把要看的书拿出来,并把暂时不看的书放回去。如果有一个足够大的书桌,则可以把所有近期要看的书都放上去,避免了往返来往于书柜和书桌之间,效率自然会高了。

那么这里就存在一个问题,难道内存中只能用于保存当前运行的程序或处理的数据吗?能否将一些频繁使用的程序在空闲的时候先读入到内存中,这样当需要该程序的时候,就可以从内存里直接执行,避免了从硬盘读取,加快系统的运行速度?其实微软已经想到这个问题了,并且在Windows中进行了一系列的尝试,而这个尝试的具体体现就是上文提到的“已缓存”这个概念。

在Windows Vista中,内存缓存中的数据主要来源于两个方面:曾经运行过,但已经退出的程序遗留在缓存中的代码;以及通过Super Prefetch功能预先读取到缓存中的代码。

对于前者,我们可能需要频繁启动和退出某些程序,因此在首次启动程序并退出时,系统并不会将内存中的相关代码全部清除,而是会被转移到内存缓存中。这样如果需要再次运行某个程序,就可以从缓存中直接使用相关的程序,避免从硬盘读取大量内容。其实这个功能很好体验,在重启动系统后,挑选一个比较大型的程序来运行,然后退出,并重新运行。这个过程中可以体验一下程序的启动速度,对于比较大的程序,可以明显体验到,首次运行所需的时间要长一些,而退出后再次运行所需的时间则会更短。

不过在这里需要注意,这个功能有一个前提,那就是程序本身不能存在内存泄露问题。内存泄露问题是指程序在运行过程中或退出后无法将自己使用到的各种资源进行回收,这属于程序本身设计上存在Bug,和Windows将程序的代码转移到缓存区中是两回事。

至于Super Prefetch(超级预读取),这则是Windows XP中Prefetch(预读取)功能的改进版。该功能会监控我们对程序的运行情况,并将一段时间内的运行程序进行记录,然后预测我们会在什么时间运行什么程序。同时在收集到足够的数据后,系统就会根据判断,在系统闲置的时候,预先将估计到随后可能要运行的程序的部分代码预先读入到缓存中。这样真正需要运行该程序的时候,就可以直接从缓存中使用预读的数据,而不用从硬盘读取。

根据目前可以获得的资料来看,在Windows 7(下一代Windows操作系统)中,预读取功能还会进一步加强,将允许我们决定是否对系统组件进行预读取,还是对用户程序进行预读取,或者同时对这两种程序进行预读取。相信经过一代一代的发展,预读取功能会更合理,更高效。

clip_image006

图2,这里保存了Super Prefetch功能记录的程序的运行信息,可以看出,信息是以每个程序的执行文件为基础记录的。一些优化文章建议经常清空该文件夹,其实这样并不可取,因为系统需要用很长时间才能统计出用于预测使用规律的数据,这些数据并不太占据硬盘,但随意清空则将导致系统重新用数周甚至数月的时间重新生成必要的统计数据

这样又遇到了另外一个问题,如果缓存中保存了太多数据,那是否意味着系统可能会因为缓存太大而导致内存不够用?毕竟缓存中保存的都是暂时不需要,以后才要运行的程序的代码,而内存最重要的功能则是给正在运行的程序提供暂住空间。

其实这个担心是完全没必要的,Windows本身就能很好地处理这个功能。如果当前正在运行的程序对内存的要求不高,还有很多内存没有被使用,这时候Windows就会自动使用大量空闲内存作为缓存。而一旦缓存已经被使用,候某个程序需要大量内存空间,这时候Windows则会通过一些复杂的内部算法,判断缓存中的哪些数据是最不重要的,然后将这些不重要的数据清空,把内存留给正在运行的程序使用。

因此建议在使用Windows Vista的时候,不要对内存的“可用数”过于执着,可用数少往往意味着系统更好地利用了内存,而不是将宝贵的内存空间闲置。

2,启动速度太慢

除了内存使用问题外,Windows Vista受人诟病的还有缓慢的启动速度。虽然Windows Vista进一步改善了系统的启动过程,在开机后往往很快就能看到欢迎屏幕并登录,但几乎所有人都有反应,在登录成功后的很长一段时间内,都可以看到硬盘灯在频繁闪烁,往往会持续数分钟的时间。

其实这个现象很好理解,因为包含了太多功能,相对老版本Windows,Windows Vista中包含了更多系统内建的服务,并且在启动和登录系统后需要加载更多的组件。而硬盘的速度在多年来都没有太大的改善,因此哪怕在配置很高的电脑上,Windows Vista的完全启动依然需要不少的时间。

其实这个问题在Windows XP中就已经存在了,很多人遇到的启动后“假死”问题就源自这里,因为从Windows XP开始,Windows会在用户登录之前只启动系统运行所必要的服务和组件,这样我们就可以尽快开始登录。然而这时候启动过程并没有完成,在用户登录后,还有很多不那么重要的服务和组件需要启动。例如在Windows Vista中,服务的启动类型除了传统的自动、手动以及禁用外,还增加了一个“自动(延迟的启动)”,这类服务就是被认为是最不重要的,可以在其他服务和组件都启动完之后才开始启动(如图3所示)。

clip_image008

图4,“延迟的启动”内容会为其他所有服务和组件的加载让路,最后一个启动,尽量将度性能的影响降到最低

其实这个问题目前来看并没有太好的解决方法。首先,系统本身内建的服务和组件都是必要的,除非确信自己不需要某个功能,这时候可以运行services.msc,在服务控制台中禁用某些服务(当心,如果不了解某个服务的用途,虽好不要随意禁用,否则可能导致系统或某些软件无法正常使用)。另外可以运行msconfig.exe,或者在Windows Defender的软件资源管理器中将不需要的自动运行程序禁用。但是这样做往往是治标不治本,因为拖累系统启动速度最大的还是系统内建的程序,除非我们的系统中有几十个程序要在启动时自动运行。难道只能考虑用RAID 0或者昂贵的SSD固态硬盘?

其实这时候可以考虑另外一个问题:不使用电脑的时候,为什么要把它关闭呢?为了省电?其实在保证省电的同时,还有更好的办法可以解决问题。

在很多人看来,不使用电脑的时候,就要把它关闭,然后在需要用的时候重新开机。其实在Windows XP之前,这样做没什么不妥,因为当时的操作系统和硬件也就只支持这样的使用方式。但现在,支持高级电源管理功能的硬件越来越普及,而且操作系统对于电源的管理也越来越出色,我们完全可以改掉以前养成的习惯。

请设想这样的情况吧:对于台式机,在不用电脑的时候,虽然电脑上还有正在处理的文件,或者打开的其他程序,但我们可以直接按下机箱上的电源按钮,随后只要等待不超过十秒钟,整台电脑都安静了,这时候电脑会进入低功耗状态,功率通常不会超过10 W。在要使用的时候,只要重新按下电源按钮,不超过三秒钟就可以看到欢迎屏幕,登录后可以看到之前打开的所有程序和文件。

对于笔记本电脑,不用的时候,只要直接关闭上盖,等待个十几秒,电脑进入低功耗状态,随后就可以带着笔记本四处游荡了,这时候电脑的功耗通常不会超过5 W。而要用的时候,只要随时打开上盖,不超过三秒钟就可以看到欢迎屏幕,登录后可以看到之前打开的所有程序和文件。

其实这就是Windows Vista中的睡眠功能在发挥作用,在有了这更功能后,电脑更像是一台普通的家电,需要的时候,打开开关立刻就能用;不要的时候,关掉开关马上就可以退出。

一直以来,除了彻底关闭操作系统和电脑的“关机”状态外,Windows还提供了“休眠”和“待机”两种节能状态。在Windows Vista中,还提供了一种新的“睡眠”状态。那么这些不同状态的进入方式有什么不同,各自又有什么特点?

如果要让电脑关机,Windows首先要关闭所有运行中的程序,然后关闭系统后台的服务,接着向主板和电源发出特殊的信号,让电源切断对所有设备的供电,电脑彻底关闭。下次开机后,BIOS完成自检工作,然后将Windows内核载入内存,接着Windows内核继续加载其他后台服务,并显示登录界面。当用户登录后,Windows开始运行被设置为需要自动运行的程序。随后我们就可以运行自己的程序,开始使用电脑。整个过程因为要彻底关闭并重头开始启动系统和程序,因此所需的时间最常。

对于待机模式,如果要将电脑放入待机模式,Windows会自动向电源发出另一种特殊信号,随后电源会切断除了内存外其他设备的供电,内存中依然保存了系统运行中的所有数据,这个过程一两秒钟就可以完成。当从待机状态进入正常状态时,只要通电,然后Windows就会继续从内存中保存的上一次的“状态数据”下运行,这个过程也只需要几秒钟。

可见,对于待机状态,完全可以不用关闭自己的程序,只要在需要的时候随手按下机箱上的电源按钮,电脑即可待机(前提是将电源按钮的操作设置为待机)。而需要恢复时也只需要按下电源按钮,几秒钟即可恢复。但这种模式虽然方便,但有一个致命的缺陷:不能停止对内存的供电。因为内存是一种易失性存储设备,必须在保证供电的情况下才能维持其中的数据。因此一旦电脑在待机状态下断电,哪怕不到一秒钟,内存中的数据将丢失,如果待机之前正在写一篇文章,那么没有保存的内容也会丢失。而下次开机的时候,Windows会像从关机状态下启动那样重新开始。

而休眠模式和待机模式类似,只不过在休眠状态下,Windows会将内存中的数据保存到硬盘上系统盘根目录下的一个文件中(可以将这个文件理解为内存状态的“镜像”)。而下次开机后则从内存上的休眠文件内读取数据,并载入物理内存。休眠模式可以实现和待机模式类似的功能,只不过恢复速度稍慢,而且需要在硬盘上占据一块和物理内存一样大的空间来保存休眠文件。物理内存越多,占用的空间就越多,而进入状态和从状态恢复所需的时间也就越长(毕竟需要把文件从硬盘读入内存,而硬盘的速度一直都是最慢的)。但这种模式的优点也有很多,不怕断电!毕竟断电后硬盘上的数据并不会丢失。

Windows Vista中新增的睡眠模式则结合了待机和休眠模式的所有优点。在进入睡眠模式后,Windows会首先将内存中的数据保存到硬盘上(这一点类似休眠),同时切断除了内存外其他设备的供电(这一点类似待机)。在恢复时,如果没有断过电,那么系统会从内存中直接恢复,只需要几秒钟;而就算断电,因为硬盘中还保存有内存的状态镜像,因此还可以从硬盘上恢复,虽然速度要稍微慢一些,但至少不用担心数据丢失。

进入速度 恢复速度 是否耗电 断电后结果
睡眠 几秒钟 不断电的情况下几秒钟 需要对内存进行少量供电 断电后未保存数据不受损,但恢复速度需要一分钟左右
休眠 两分钟左右 两分钟左右 完全不耗电 未保存数据不会丢失
待机 几秒钟 几秒钟 需要对内存进行少量供电 断电后所有未保存数据都会丢失

表1,不同模式的不同特征(假设是一台4 GB内存,5400转硬盘的笔记本电脑)

综上所述,这三种节能模式各有利弊,但如果在使用Windows Vista,则强烈建议使用新的睡眠功能代替以往习惯的关机操作。毕竟睡眠功能的优势显而易见,不仅可以避免漫长的启动过程,而且完全可以把电脑当作电视一样的一般电器,随开随关,完全不用担心丢失数据。那么这个功能到底要如何设置?

在使用睡眠功能之前,请尽量将主板BIOS以及所有硬件设备的驱动都更新到最新的版本。因为有时候,有Bug的BIOS或驱动有可能导致睡眠失败,或睡眠后无法正确唤醒。另外还需要确保系统盘上有足够的空间,至少系统盘上要有和物理内存大小一样的可用空间。

做好这些准备后,让我们开始行动吧。打开控制面板,依次进入“系统和维护-电源选项”,然后单击窗口左侧的“选择电源按钮的功能”链接,随后可以打开图5所示的界面。

clip_image010

图5,选择不同按钮的对应操作

这里分别针对“用电池”和“接通电源”两种情况提供了分别设置的选项。需要注意的是,“用电池”选项以及“关闭盖子时”选项都是针对笔记本电脑的,如果是台式机,则不会显示这些选项。请根据情况,分别为用电池和接通电源两种情况设置不同的操作。

在上图中,“按电源按钮时”所谓的“电源按钮”是指机箱上的硬件按钮;而“按休睡眠钮时”所说的“休睡眠按钮”则是指某些机箱或键盘上的硬件按钮(并非所有电脑都有);“关闭盖子时”中所说的“盖子”自然是指笔记本电脑的上盖。

设置好上述内容后单击“保存修改”。这样以后我们甚至不需要从开始菜单中关机,直接按下机箱上的电源按钮,就可以让电脑进入我们希望的状态。而要从这种状态恢复时也只需要再次按下机箱上的电源按钮。

如果平时都希望让电脑休眠,而偶尔一次因为某些原因希望彻底关机,或者采取其他操作,那么也很简单。打开开始菜单,单击开始菜单右下角的三角形按钮,在弹出菜单中就可以看到本机可以支持的所有选项(如图6所示),根据需要选择对应选项即可。

clip_image012

图6,将电脑切换到其他状态下

很多人可能会问一个问题,休眠功能怎么不在了?其实在Windows Vista中,微软希望我们尽可能使用睡眠功能代替以往的休眠功能,毕竟睡眠功能更好用。然而有时候我们可能还是需要使用休眠功能,但发现竟然没有和“休眠”有关的选项。其实这是Windows Vista中的混合睡眠功能在起作用。在启用混合睡眠功能后,将无法单纯使用休眠功能,因此如果一定要使用休眠功能,就需要禁用混合睡眠。

在控制面板中依次进入“系统和维护-电源选项”,单击当前使用的电源计划对应的“更改计划设置”链接,并单击“更改高级电源设置”链接,随后可以打开图7所示的电源选项对话框。在该对话框中展开“睡眠-允许混合睡眠”,然后这对不同的供电方式进行设置即可。

clip_image014

图7,要使用休眠功能,就需要先关闭混合睡眠功能

通过使用休眠功能,我们可以获得更快的关机和开机速度。虽然这并不是严格意义上的开关机,但至少目的已经实现了。使用睡眠模式,唯一需要付出的就是对内存的持续供电,以及在硬盘上占用一块和物理内存容量一样大的空间。其实这样的付出还是值得的。对于内存的供电,虽然需要多交电费(内存本身的耗电量并不大),不过这些代价完全可以通过效率的提高补偿回来;而硬盘空间的代价,现在500 GB的硬盘售价都到500块钱以下了,这个问题似乎也不是难以接受。

唯一需要注意的是笔记本电脑用户,因为睡眠功能下还需要对内存供电,虽然内存耗电量并不高,但长时间供电依然会降低电池的可用电量。如果让笔记本进入睡眠状态,并断开了交流电(例如要到外地出差),那么这时候就要万分小心,以免睡眠功能耗尽了电池的电量。虽然这种情况下数据依然不会丢失,但需要用电池的时候发现电池没电了,反而会更麻烦。

3,内存释放软件

现在的程序越来越复杂,对硬件的要求越来越高,似乎无论多快的硬件,总会出现最新的软件,让它变得慢如蜗牛。依然,这里面最受关注的就是内存的使用。

虽然上文中已经介绍了Windows Vista对内存的使用方式,然而并非所有人都有大内存,依然有很多人希望能够通过软件的方法让系统释放出空闲的内存,供程序使用。同时有很多所谓的“系统优化软件”宣称可以释放出内存,让系统运行速度更快。然而真的如此吗?

在写这篇文章的时候,我用多个宣称可以释放内存的软件进行过试验,结果无一例外显示,这类软件唯一的用途就是将程序占用内存的数据都分页(关于分页的介绍请参考下文)到硬盘上,并造成可用内存数量增多的假象。为了证明这一点,我们需要使用一个可以强制进行分页的工具,当然,既然没啥效果,市面上常见的内存释放软件就不要装了,我们可以使用微软提供的一个小工具:empty.exe,这个软件也可以将特定进程占用的内存分页到页面文件中,该工具属于Windows Server 2003 Resource Kit Tools的一部分,可以在这里下载。

下载回来的是一个exe文件,双击运行安装。需要注意,该工具和Windows Vista有兼容性问题,但我们只需要使用其中的empty.exe,这个工具完全可以用于Vista下,因此在安装时遇到兼容性警报的时候可以忽略。当然,如果还有其他运行Windows XP的电脑,我们也可以在这些电脑上安装,然后将empty.exe复制过来使用。

这个工具在Vista下必须使用管理员身份运行,又因为这是一个命令行工具,因此首先需要启动一个管理员权限的cmd命令行窗口,然后使用“empty appname.exe”的方式运行,其中“appname.exe”是要强制进行分页的程序的名称,或者也可以运行“empty *”强制对所有进程进行分页(有几个系统进程无法分页,这是正常情况,可以不用理会)。

另外为了监控整个状态,还需要使用Windows任务管理器,但首先需要对其进行设置。请打开Windows任务管理器,并打开“进程”选项卡,然后单击“查看-选择列”,打开选择进程页列对话框。在该对话框中将除了“内存 – 专用工作集”和“页面错误增量”之外的其他选项都反选。这里的“内存 – 专用工作集”可以理解为每个进程当前使用的物理内存数量,而“页面错误增量”则可以理解为每个进程当前从硬盘上的页面文件中将数据重新读入到物理内存操作发生的次数。

随后挑选一个占用了大量内存的程序,例如本文会以同时打开了多个标签的Firefox浏览器为例。当前firefox.exe进程的专用工作集大小是112432 KB,随后将Firefox浏览器最小化,并保持Windows资源管理器窗口在最前,然后使用管理员身份打开一个cmd命令行窗口,进入到保存了empty.exe文件的目录下,运行“empty firefox”命令,该命令可以强迫将Firefox占用的物理内存分页到硬盘上。在这个过程中,可以观察到硬盘灯在频繁闪烁,并且firefox.exe进程的专用工作集变为了6608 KB,但同时该进程的“页面错误增量”一栏会显示出较大的数字,这表示该进程占用的内存正在被分页到硬盘上,随后可以在“性能”选项卡上看到,可用内存数量会增加。

随后请重新打开Firefox浏览器的窗口(同时亦然保持Windows任务管理器窗口在最前,以便观察最新状态),并拖动网页,然后切换不同的标签,并打开不同的菜单以及对话框。在这个操作过程中请密切留意firefox.exe进程的“页面错误增量”一栏显示结果,通过观察可以看出,随着不同操作的进行,该进程会出现频繁的页面错误增量,这表示系统正在将该进程的数据重新从硬盘上的页面文件中读入到物理内存。同时随着操作的进行,该进程的工作集大小会逐渐变大,并恢复到操作之前的大小。

从上面的试验可以看出,表面上这类软件确实有用,因为在经过释放后,占用内存比较多的程序确实释放了一些内存。但是一个普遍的现象就是,整理结束之后,这些程序占用的物理内存数目都会慢慢回升,基本上都会回升到整理之前的情况下。这样造成的结果就是,可能花了10秒钟释放出来的内存,在整理完毕之后5秒的时间内就又重新被程序使用回去了。同时经过释放之后,在应用程序的窗口之间切换时会变得很不流畅(因为程序的运行需要物理内存,而数据被强制写入到硬盘上,因此释放结束后程序还需要重新将数据读入到硬盘,等于做了无用功),而且在释放过程中,CPU的使用率基本上都居高不下,同时硬盘也在连续工作,以这样的代价换来内存数量在几秒钟内的减小但又迅速回升,难道仅仅是为了让内存可用数量在短时间内显得很多?

这类释放内存的软件没有太大作用。相反,有些软件可以在内存占用达到一定程度之后自动释放内存,这可能会对本身就已经很繁忙的计算机雪上加霜。想象这种情况,当内存数量不多,而又运行了比较大型的程序后,必然导致物理内存数急剧减少,在这种情况下所谓的“优化软件”开始自作聪明,把占用内存的数据往硬盘上进行分页。而程序的运行需要这些数据,这可能导致了在同一时间内,“优化软件”试图将数据分页到硬盘,而应用程序试图将数据从硬盘读取到内存,极大增加了硬盘的工作负荷。

其实在早期,这类程序还是有一定效果的,那时候主流的Windows 9x操作系统本身在内存管理上存在问题,而且有些设计不严谨的程序也可能存在内存泄露的Bug,因此这类软件应运而生。但是现在基于NT技术的Windows操作系统在内存管理上得到了极大提高,同时大部分软件的设计也越来越合理,因此可以说我们已经不再需要这类软件。

4,虚拟内存的处理

上文已经说过,系统会在有必要的时候将暂时不使用的程序占用物理内存的数据分页到页面文件上,并在需要的时候重新将这些数据读回物理内存。分页文件也叫做“虚拟内存”,顾名思义,就是用硬盘空间充当内存的一种做法。关于虚拟内存,主要面临两个比较受争议的问题。

首先,对于拥有大容量物理内存的用户,是否可以完全禁用虚拟内存?要了解这个问题,首先得明白什么是虚拟内存,以及虚拟内存有什么作用。在早期,因为内存价格非常昂贵,因此一般电脑上都不会配置太多,那么有时候如果操作系统和应用程序需要的内存数量超过了计算机中安装的物理内存数量,操作系统就会暂时将不需要访问的数据通过一种叫做“分页”的操作写入到硬盘上一个特殊的文件中,从而给需要立刻使用内存的程序和数据释放内存。这个位于硬盘上的特殊文件就是分页文件(也就是虚拟内存文件或叫做交换文件)。对于Windows 2000/XP/2003/Vista/2008操作系统,分页文件名为pagefile.sys,默认情况下位于操作系统所在分区的根目录下。

既然知道了虚拟内存的由来和作用,那么持这种理论的人认为,硬盘和内存的速度具有天壤之别,如果禁用了虚拟内存,系统就不需要花时间将内存中的数据分页到硬盘上,从而提高了系统的运行效率。然而根据传统的设计,Windows 的许多核心功能都需要使用分页文件,而如果你禁用了所有分页文件,有些第三方的应用软件都可能会遇到内存不足的错误。其实在不需要的时候,Windows并不会使用分页文件,因此这样调整系统你并不能获得任何性能上的提高。

其次,对于虚拟内存,很多地方建议的设置是物理内存数量的1.5-2倍(分别为虚拟内存的最小值和最大值)。在讨论这个问题之前首先看两种情况:有两台电脑,除了内存,其他所有配置都相同。电脑A拥有512 MB内存,电脑B拥有4 GB内存,这两台电脑都运行Windows Vista操作系统。按照这个观点的方法设置,电脑A的虚拟内存将会设置为768 MB-1024 MB,而电脑B的虚拟内存将会设置为6 GB-8 GB。那么实际使用中呢,电脑A很可能会在运行大型软件或者游戏的时候产生虚拟内存不足的问题,而电脑B则会因为设置了如此大的分页文件而导致硬盘空间的浪费。

到底如何根据实际情况设置虚拟内存?其实首先需要考虑每台电脑的不同环境。毕竟每个人使用的软件,以及使用习惯都各不相同,别人总结的规律未必就能适合我们。所以解决这个问题的一个思路是,首先通过某种方法统计自己电脑在典型使用中到底需要使用多少物理内存,然后根据统计结果对页面文件进行合理设置,这样不仅不会因为内存不足导致程序运行出错,而且也不会因为设置了太大的页面文件导致硬盘空间被无谓地浪费。

为了监控分页文件的使用,首先需要给分页文件设置一个固定的大小。为此,请在“计算机”上点击鼠标右键,选择“属性”,打开系统属性窗口,随后单击窗口左侧的“高级系统设置”链接,打开系统属性对话框,在“高级”选项卡下,单击“性能”类别下的“设置”按钮,打开性能选项对话框。随后打开“高级”选项卡,单击“设置”按钮,打开图8所示的虚拟内存对话框。

clip_image016

图8,在开始监控之前,首先设置使用固定大小的分页文件

首先反选“自动管理所有驱动器的分页文件大小”选项,然后从驱动器列表中选中系统盘,并选择“自定义大小”选项,接着在“初始大小”和“最大值”文本框中输入同样的数值。这里建议输入稍微大一些,例如“4096”,这表示将分页文件限制在总是使用4 GB空间。操作完毕后单击“设置”按钮,并重启动系统,随后系统就会被限定只使用,而且最多只能使用4 GB硬盘空间保存分页文件。

随后运行“perfmon”打开性能监视器,展开左侧窗格的“数据收集器集-用户定义”节点,用鼠标右键单击“用户定义”,选择“新建-数据收集器集”,打开创建新的数据收集器集向导。在向导的第一个页面上输入收集器集的名称,例如这里可以使用“虚拟内存使用监控”,然后选择“手动创建(高级)”,并单击“下一步”。

随后需要选择要收集的数据,这里需要选择“性能计数器”,并单击“下一步”。然后要添加监控的内容,请单击“添加”,打开图9所示的选择计数器窗口。首先请从左侧的“可用计数器”列表中展开“Paging File”类别,从该类别下选择“% Usage Peak”,对象实例列表中选择“_Total”,然后单击“添加”。单击“确定”并单击“完成”,保存该收集器集。

clip_image018

图9,添加的计数器可用于监控整个系统所有分页文件的整体使用情况

随后在可靠性和性能监视器窗口中就会显示出这个新建的收集器集,但默认情况下该收集器并未被启用,还需要单击将其选中,然后单击工具栏上的“启动”按钮(如图10所示)。

clip_image020

图10,启动要运行的收集器集

然后即可按照平时的使用习惯开始使用电脑,运行所有常用程序,同时完全可以忘记该收集器的存在。收集器会在后台自动工作,并持续记录分页文件的使用情况。经过一段时间(一天、两天、一周皆可)的典型使用,该收集器集就已经获得了足够的数据,此时可以对相关数据进行分析。

在收集到所需的数据后,可以开始查看报告了,但首先需要将该收集器集停止。还是在上文中图10所示的界面上,选中“虚拟内存使用监控”这个收集器集,并单击工具栏上的“停止”按钮,随后在可靠性和性能监视器窗口左侧的“报告-用户定义-虚拟内存使用监控”节点下,可以看到一个或多个报告。如果在该收集器集运行过程中重启动过系统,或者因为其他原因停止过该收集器的运行,那么每次重新监控之后,系统就会生成一个新的报告。单击报告(名称从“000001”开始递增),即可在右侧窗口中看到报告的具体内容(如图11所示)。

clip_image022

图11,查看收集到的有关虚拟内存使用情况的报告

从报告中可以看出,在该报告的监控时间段内,虚拟内存使用的平均值是“7.939”,最小值是“7.846”,最大值是“8.832”,这里记录的实际上是使用的虚拟内存占虚拟内存总数的百分率,也就是79.39%、78.46%,以及88.32%。因为在开始监控之前,我们已经设置了固定的虚拟内存大小:4096 MB,因此分别和这些百分率相乘,就可以获得虚拟内存使用情况的具体值。也就是,最小使用了3213 MB,最大使用3617 MB,平均使用3251 MB。在这里,平均值可以设置为图8中的“初始值”,而最大值可以设置为“最大值”。同时为了留有一些余地,建议在设置的时候,给这两个值实际设置的内容再增加10%。

在设置虚拟内存的时候还需要注意,如果有超过一块硬盘,那么最好能把分页文件设置在没有安装操作系统或应用程序的硬盘上,或者所有硬盘中速度最快的硬盘上。这样在系统繁忙的时候,才不会产生同一个硬盘既忙于读取应用程序的数据又同时进行分页操作的情况。相反,如果应用程序和分页文件在不同的硬盘上,这样才能最大程度降低硬盘利用率,同时提高效率。当然,如果只有一个硬盘,就完全没必要将分页文件设置在其他分区了,同一个硬盘上不管设置在哪个分区中,对性能的影响都不是很大。

5,闲置时硬盘灯频繁闪烁

在使用Windows Vista的过程中,很多人都发现了这样的问题:当电脑闲置一段时间后,哪怕没有运行什么太大的程序,都可以看到硬盘灯在频繁闪烁,似乎系统正在忙于处理某些数据。有些人以为自己的系统中毒了,其实并不是这样,这很可能是由于Vista的一些后台服务导致的。

Vista中的很多功能需要预先处理大量数据,而如果在用户正在用电脑的过程中进行,这无疑会影响正常的使用,因此一些处理工作会被安排在系统闲置的时候在后台自动进行。这种问题主要存在于两个功能中:Vista中自带的磁盘碎片整理程序,默认情况下就会在某个固定的时间自动运行,这样我们可以不用再注意磁盘碎片的整理,因为整理工作可以在我们不经意的情况下自动进行,以保证更好的读写性能。

另外Vista中带有强大的文件搜索功能,可以通过文件中包含的文本或者文件的属性,对大量文件进行搜索。然而这个功能的使用有一个前提条件,那就是需要预先为被搜索的文件创建索引,以后的搜索可以在索引数据库中进行,因此搜索速度更快,更准确。然而取决于被索引的文件内容和数量的多少,索引工作可能需要一段时间才能进行完毕。在创建索引的时候,系统的性能将受到非常大的影响。

其实在Vista中已经考虑到了这样的问题。以前,典型使用情况下,一般可能只会同时运行一两个程序,而现在,很多人已经习惯了同时打开十几个甚至更多的程序,除了当前正在用的程序外,其他程序都将在系统后台运行。如此多的程序在同时运行,这就容易导致一个问题:资源的争夺。这里所说的资源有多种类型,例如CPU资源、内存资源,磁盘I/O资源等。现在的CPU速度越来越快,核心越来越多,而新购买的电脑内存也越来越多,因此多个程序同时运行对于CPU和内存资源的争夺并不严重,相反,对磁盘I/O资源的争夺则越发严重。

首先,几乎每个人系统中都需要安装反病毒软件,并打开实时监控,该功能会实时扫描我们要访问的每个文件。因此如果反病毒软件在扫描文件,而我们还在进行一些磁盘读写操作较多的活动,例如压缩或加密文件,以及处理大量零散数据,这将导致很严重的冲突。

和很多人想象的不同,就算同时运行了多个程序,同一时间里,也只能有一个程序对硬盘进行读写。如果多个程序需要读写,则系统会将其他读写安排到队列中,按顺序处理队列中的请求。在老版本Windows中,磁盘的读写请求是没有轻重缓急之分的,也就是说,如果反病毒软件要在后台扫描文件,而我们要在前台处理某个文件,这两个程序的读写请求将会被平等对待。其实这种做法并不好,因为反病毒软件运行在后台,就算慢一点,我们也不容易察觉。而在前台使用的程序如果比较慢,则很容易察觉,同时还会降低操作效率。

在Windows Vista中,则新增了一套全新的I/O优先级功能。简单来说,所有在前台运行的程序,都将具有较高优先级的磁盘读写I/O,而后台运行的程序的I/O优先级较低。这样如果前台和后台程序都需要读写硬盘,则系统会优先处理前台程序的请求。因此理论上来说,就算有再多程序需要同时读写硬盘,至少前台程序受到的影响都将被降到最低。

再将话题说回上文提到的两个功能。其实这两个功能对系统性能的影响远没有很多人认为的那么严重。首先,这两个功能都是通过系统后台进程实现的,因此本身I/O优先级就很低,对其他前台程序的影响很小。另外,默认情况下,这些功能都只有在系统闲置(例如中午休息时间或午饭时间)的时候才会进行操作,一旦我们重新需要使用电脑,这些进程就会自动退居后台,用较低优先级继续运行。如果我们需要运行某些比较大型的程序,这些后台进程还会在有必要的时候自动暂停处理,直到系统重新开始空闲。

因此一个比较有效的建议是,如果有一两个小时不使用电脑,不妨将电脑闲置起来,而不要关机或睡眠,这样系统就可以利用这段时间处理后台进程。用一两小时的处理换来平时更流畅的使用体验,这还是很划算的。

当然,如果实在不能忍受这个功能,或者完全不需要这样的功能,也可以把这两个功能的自动操作特性禁用。对于磁盘碎片整理功能,请在开始菜单中运行磁盘碎片整理程序,打开图12所示的界面。

clip_image024

图12,禁止磁盘碎片的自动整理,或重新指定计划整理的时间

如果完全不希望自动整理磁盘碎片,可以反选“按计划运行(推荐)”选项,这样系统将不再自动整理碎片,但我们依然可以在觉得有必要的时候手工进行整理。当然,也可以启用自动整理功能,但单击“修改计划”按钮,选择一个不同的整理时间,例如可以安排在午饭时间,或者每周例会等短时间内不使用电脑的时间段内。

对于搜索功能,如果觉得完全不需要,则可以运行services.msc打开服务控制台,找到并双击“Windows Search”服务,将其启动类型设置为“已禁用”。

6,错误报告功能

错误报告功能最早出现在Windows XP中,该功能可以在系统或其他程序发生严重错误后记录相关的信息,并将信息匿名发送给微软,微软可以通过收集到的信息判断问题的原因,并在后续的补丁中对问题进行解决。

在Windows Vista中,这个功能得到了进一步加强,不仅可以将问题反馈给微软,而且可以从微软收到包含问题解决方法的回应。另外还有很多软件开发商参与到这项活动中,如果是第三方软件出错,微软还可以将问题反馈给开发商,由开发商研究问题并提供解决方案,然后通过微软反馈给遇到类似问题的用户。

不仅如此,在Windows Vista中,错误报告功能不仅可以报告系统和程序运行过程中出现的错误,还可以报告更多影响正常使用的问题,例如,如果某个设备缺乏驱动程序,只要这个设备不是太罕见,那么就可以通过错误报告功能了解在哪里可以下载到所需的驱动。

很多人对这个功能方案的主要原因在于,担心这个功能可能会侵犯自己的隐私。根据微软公布的信息来看,错误报告功能只收集程序本身运行的状态信息,并不会包含任何私人数据,而且问题的提交完全是匿名的,同时提交的信息也会有一套严格的机制以保证其安全。但如果依然不相信这一套做法,则可以完全将该功能禁用,方法是这样的:在Windows Vista的控制面板中,依次进入到“系统和维护-问题报告和解决方案”,然后单击窗口左侧的“更改设置”按钮,并单击“高级设置”链接,随后可以看到图13所示的问题报告的高级设置窗口。

clip_image026

图13,根据需要决定是否使用问题报告功能

如果希望完全禁用该功能,可以选择“关闭”选项,并单击“确定”,这样可以禁用当前用户的错误报告功能。如果希望直接针对本机的所有用户生效,则需要单击第一个“更改设置”按钮,选择“关闭”。如果单击第二个“更改设置”按钮,则可以看到图14所示的窗口,在这里可以根据具体情况,对所有用户设置在遇到什么样的问题后才报告错误。

clip_image028

图14,控制该功能的工作方式

如果选中图13的“自动发送帮助解决问题所需的信息”选项,则在遇到错误后,系统会自动将相关的附加信息提交给微软,而不需要每次都询问用户。通过该选项下方列出的两个链接,则可以了解到有哪些信息会被发送,以及会对我们的个人隐私产生什么影响。

在禁用该功能之前,建议首先了解一下这个功能是否可以给我们带来便利。假设已经针对所有用户启用了报告功能,并采用默认设置,那么当检测到系统或程序出现问题时,错误报告功能会自动运行,并将相关信息提交给微软。在这个过程中,系统通知区域会显示一个图标,并且系统会用气泡通知的方式告诉我们当前正在提交问题。

将问题提交后,错误报告功能会用一个新的气泡通知告诉我们报告的结果,单击该气泡通知后可以看到图15所示的界面。

clip_image030

图15,在这里可以看到针对具体问题的解决方法

对于提交的问题报告,如果是已知问题,并且已经有解决方案,那么就会显示在窗口右侧的列表中;如果问题已经在研究中,则也会有一条信息显示在右侧窗格内;但如果某个提交的问题还能罕见(毕竟人力有限,同一个问题,遇到的人越多,才越容易引起关注,并优先被解决),或者提交的信息不足以判断问题的原因,则不会有任何反馈。

单击对应的问题后,即可看到解决方案的详细信息,例如可能需要安装微软发布的某个补丁,或者采取某些特殊的操作,或者到开发商网站上下载驱动程序或其他补丁程序等。基本上,根据解决方案中列出的信息,很容易就可以将问题解决好。

如果图15所示窗口左侧的“查看问题以检查”链接是可点击的,这表示系统记录了某些错误,但还没有上报,这时候可以单击该链接,并看到图16所示的对话框。

clip_image032

图16,这里列出了待检查的所有问题

在该图中,我们可以看到遇到问题的每个程序的名称、出现问题的时间、问题的具体类型等信息,而单击对应的“查看详细信息”链接后,还可以看到更多详细信息。对于每个问题,可以分别单击对应的复选框将其选中,或者单击“全选”选项一次性选中所有问题,并单击“检查解决方案”按钮开始检查。

另外建议每隔一段时间(例如半个月或一个月)手工进行一次检查,方法是直接单击图15所示对话框左侧的“检查新解决方案”链接。这是因为同一个问题,可能在首次提交的时候并没有解决方案,但以后有了解决方案,不过这种时候我们并不能主动收到通知,必须再次检查。

7,破解系统文件,加速网络

如果你经常使用各种P2P软件,例如下载软件,或在线视频软件,那么肯定会听说过一种说法,微软会限制网络连接的数量为10个,导致下载速度慢,必须破解某个系统文件,才能获得最高速度。而且有些P2P软件还很“体贴”,带有自动破解程序,只要发现系统没有被破解,就会自动询问是否要破解系统文件。

那么这个问题到底是怎么产生的,微软又为什么要这样做?

其实这个问题最早出现在Windows XP SP2上,而更新的操作系统上都存在这一所谓的“限制”。其实这个问题上本身就存在很大的误解,微软确实在限制,但限制的是半开连接的数量,而不是普通的连接。那么什么又是半开连接?在理想情况下,当一台电脑需要通过TCP/IP网络和其他电脑通讯的时候,必须首先建立一个到对方的连接,并等待对方响应,只有对方成功响应后,才表示这个连接已经建立成功了。而对方尚未响应的连接就叫做半开连接。

目前的很多网路蠕虫病毒在传播时,就会同时建立很多连接,而其中大部分都是这种半开连接。为了抑制蠕虫病毒的传播,微软限制操作系统在同一时间内,最多只能创建10个半开连接,如果试图创建更多,则会被拒绝,并在事件查看器中记录下ID为4226的事件(如图17所示)。

clip_image034

图17,系统记录的4226事件

可见,这个限制更多程度上是为了保护系统安全而设置的,而且限制的也并不是正常情况下成功建立的连接。那么又为什么很多P2P用户会认为这是一种限制?其实这要看P2P软件的工作方式。和传统的下载方式不同,P2P方式的下载需要创建大量连接,而前者一般只有一个连接(如果使用多线程下载软件则另当别论),不过Windows中的这种设置并不会对P2P软件有太大影响。

举例来说,假设某个P2P软件同时发起了100个连接,并且在很短的时间里,其中的95个都收到了响应,这表示已经创建了95个连接,这些连接并不会受到任何限制。对于另外5个没有收到响应的连接,就会看作是半开连接。如果随后该软件又发起了100个连接,只有90个收到了响应,这表示系统中目前已经有了15个半开连接。这时候,Windows就会对这15个连接进行限制(仅仅是限制,而非中断),这15个连接会按照发起时间来排队,由系统依次放行,等待收到对方的响应。

因此理论上来说,这种限制并不会限制P2P的下载速度,最多只能影响到达理论最高速度所需的时间。例如,原先没有限制的时候,可能只需要两分钟就可以达到最高速度;但现在因为限制半开连接,可能需要多一倍的时间才能到达,因为在这些时间里,只能由10个半开连接在等待对方的响应,而不像以前,所有半开连接都在等待。虽然这可能对速度有少许影响,但换来的是更好的安全性。

而且现在很多P2P软件本身也有选项,可以对允许创建的半开连接最大数值进行限制。例如图18所示的就是uTorrent软件中的一个选项,默认情况下,该软件本身就被限制为只能创建8个半开连接(建议不要修改为10个,毕竟还要为能够立刻收到响应的连接留出一些名额),但是传输速度,真的很慢吗?

clip_image036

图18,存在“限制”的系统中,传输速度依然可以很高

8,Windows Media Player是鸡肋?

很多人都觉得Windows Media Player是鸡肋,体积大,启动速度慢,支持的格式不够多,因此很多人开始考虑使用Foobar 2000或千千静听等软件。其实这是一个很大的误解,主要是很多人现在并不明白Windows Media Player的定位,往往以一个单纯的音频或视频播放软件来看到,实际上,目前的Windows Media Player已经可以看作是一个电脑中的娱乐中心或控制中心。

举例来说,对于很多人,往往会按照这样的习惯整理自己的数码音乐收藏:在某个文件夹下,针对每个歌手创建一个文件夹,然后在该文件夹下为该歌手的每张专辑创建子文件夹,并将歌曲按照专辑保存在不同的文件夹中(如图19所示)。在要听歌的时候,我们往往会直接播放整个歌手文件夹,或播放某个专辑对应的文件夹。虽然很多人都习惯了这种做法,难道这种做法真的就是最方便的吗?

clip_image038

图19,数码音乐最传统的整理方式,最然最常见,但未必就是最好的

假设换个思路,我们希望听到自己收藏的所有流行歌曲或乡村歌曲,这时候该怎么办?又或者,我们希望听到2003年发布的所有专辑,该怎么办?我们希望听到最平时最常听,或者最喜欢的歌曲,又该怎么办?这种要求都有一个共同点:需要对所有的数码音乐收藏进行分类,而且要听的歌曲未必就在某个特定的文件夹下。

或者,我们的硬盘上收集了从音频CD上翻录的歌曲,为了实现最好的音质,在翻录时候使用了较高标准的音质。如果希望将这些歌曲复制到MP3随身听上,那么还要考虑自己的随身听是否支持如此高标准的文件,如果不支持,还要考虑对文件进行转换。

如果希望将歌曲刻录到光盘上,在汽车音响中听,又该使用什么软件?

其实只要以他Windows Media Player,上述所有目标都能实现,而不需要安装越来越多的各种程序,而且在Windows Media Player中,所有这些操作都很简单易用。

首先,在将歌曲导入到Windows Media Player中(最简单的办法是把歌曲保存在系统默认的“音乐”文件夹中)之后,Windows Media Player会对歌曲的信息进行检索,并创建一个数据库,保存所有和歌曲有关的信息,例如歌手、唱片名称、唱片封面、词曲作者、流派等。而在Windows Media Player中,我们可以分别根据这些信息作为条件对所有歌曲进行筛选和整理。其实这就类似于虚拟文件夹功能,我们可以在不同的虚拟文件夹中看到符合某个特定条件的所有内容。例如图20显示的就是根据“艺术家”这一条件对所有歌曲进行筛选后的结果。实际上这里显示的所有歌曲都用图19所示的方式进行整理,但在Windows Media Player中,我们却可以根据不同的条件为依据进行查看,就好像这些文件真的按照这种方式保存在硬盘中一样。

clip_image040

图20,通过某些条件对歌曲收藏进行筛选和整理

从上图中可以看到,在Windows Media Player窗口左侧的“媒体库”节点下,我们可以通过多种不同的条件对所有文件进行筛选和归类。另外Windows Media Player还带有强大的搜索功能,通过窗口右上方的搜索框,只要输入关键字,就可以找到所有符合条件的内容。

如果希望将收藏的歌曲通过转换复制到随身听中,子啊Windows Media Player中也是一个简单的操作。只要将随身听连接到电脑,并在图21所示的设备属性对话框中分别针对音频和视频文件设置设备所能支持的最大规格即可。

clip_image042

图21,设置便携设备所能支持的最大文件规格

设置好之后,只要将要复制的文件拖动到同步列表中,随后即可开始对文件进行转换,并复制到设备。另外这里的转换只针对复制到设备上的文件副本进行,也就是说,自己硬盘上保存的文件的质量不会受到任何损害。

如果需要将收藏的歌曲刻录到光盘上,那么Windows Media Player可以让我们刻录音频CD,或者刻录普通的文件光盘。这两种方式的区别在于,音频CD不仅可以在电脑上播放,而且可以在车载或家用CD/DVD机等电子设备上播放。而文件光盘则只能在电脑,或者专门声明支持MP3光盘的CD播放机上播放。

clip_image044

图22,将音乐收藏刻录到光盘上,并在更多设备上播放

如果家里有家庭网络,并且有多台电脑,则更应该试试看Windows Media Player的媒体库共享功能。简单来说,该功能可以将一台电脑上的Windows Media Player媒体库文件通过网络共享出来,这样,其他任何设备,包括电脑、Xbox 360,或者其他支持这一技术标准的网络多媒体播放机,都将可以通过无线或有线网络的方式播放文件,而不需要每台电脑都浪费硬盘空间保存同样内容的影音文件。

clip_image046

图23,左侧的“媒体库”节点下显示了本机的媒体文件信息,而“刘晖,在台式…”节点下则显示了来自另一台电脑上的媒体文件信息

9,喋喋不休的UAC

UAC(用户帐户控制)是Windows Vista中的一个新功能,该功能可以让管理员用户以标准用户的凭据运行大部分程序,只有在需要的时候才进行提升,并开始使用管理员帐户的权限。这个功能保证了默认情况下,大部分程序(包括恶意软件以及病毒)都只能使用标准用户权限运行,这样软件就无法对系统设置进行修改或破坏。

UAC功能是Windows Vista中最受争议的,原因在于,很多人觉得,自己平时的很多操作都会被UAC打断,并认为这样的设计很烦人。而有些人则认为,UAC似乎没有存在的必要,因为几乎每一次遇到UAC对话框的时候,绝大部分人都会直接点击“允许”。

其实所谓的“打断”正是UAC的目的。为了保证安全,几乎所有安全类的教程和图书都会建议我们平时使用电脑的时候使用标准用户,只有在需要对系统进行维护或修改设置的时候,才使用管理员帐户,对于任何现代操作系统,这都是保证安全性的一个基本前提。然而事实情况是,绝大部分人都是直接使用管理员帐户的,甚至在使用Windows系统内建的Administrator帐户,原因主要有两个:在Windows 9x时代,没有用户权限一说,很多人已经习惯于使用安装系统后创建的帐户。然而从Windows XP开始,Windows系统的安全权限限制得到了加强,用户帐户可以分为不同的类型,然而习惯已经养成,不是那么容易就改掉的。另外,也有很多人觉得,为自己准备两个帐户,并在需要的时候进行更换很麻烦,而且一些特殊的软件也要求用户具有管理员权限才可以运行,如果使用标准用户的权限,将无法运行。

其实上述两个问题在UAC中都可以得到解决。首先,默认设置下,所有管理员帐户,在登录时候都将获得两个访问令牌(可以理解为开门用的“钥匙”),一个对应标准用户权限,一个对应管理员帐户权限。平时操作时,用户将自动使用标准用户令牌进行活动,例如打开文件,或启动程序。而只有在需要的时候,才换为使用管理员令牌进行活动。至于标准用户,则更简单,在登录时候只能创建标准令牌,并一直使用该令牌进行所有活动。

如果需要提升,也就是需要换为使用管理员令牌执行某些操作,这时候UAC功能会弹出一个对话框。对于管理员用户,需要在这个对话框上单击“继续”,确认操作;而对于标准用户,则需要在UAC的提升对话框上输入一个本机的管理员帐户的密码,然后才能继续。

clip_image048

图24,管理员用户的UAC提升对话框

在有了UAC的帮助后,真正实现了让用户用最小的特权使用Windows这一要求,事实上在Windows Vista的开发过程中,UAC最初也就被叫做最小特权用户(LUA)。这样所有人都可以使用标准用户的权限执行所有操作,只有在特定操作需要更高特权的时候,才进行UAC的提升。

在这里可以想象这样的例子:假设一位用户的电子邮件中收到了包含病毒的附件,这个病毒会自动修改系统配置,并感染系统,那么在启用和禁用UAC的情况下,这个用户会遇到怎样的情况?如果有UAC功能,该用户默认将使用标准用户的权限运行电子邮件软件,而在该软件中执行附件的时候也将自动使用标准用户的权限。因为标准用户无权修改系统配置,因此病毒就算运行,也无法感染系统。然而如果没有UAC功能,用户直接使用管理员帐户登录,此时该用户具有对系统的所有控制权限,该用户运行的程序(电子邮件软件以及收到的病毒)也都将具有同样的程序,因此病毒可能会感染系统。

因此UAC是完全有必要的,并不像很多人说的那么鸡肋。然而现阶段,UAC也确实具有需要改善的地方,下文会分别介绍。

首先,默认情况下,在显示UAC的提升对话框时,整个桌面会闪烁一下并变暗,只有UAC的提升对话框是可以操作的。这是UAC中的安全桌面功能,主要是为了预防假冒程序。在启用安全桌面功能的前提下,如果需要显示UAC提升对话框,系统首先会对桌面显示内容进行截图,并将截获的图片全屏显示出来,同时在该图片上方显示UAC的提升对话框。此时只有UAC提升对话框是可以操作的程序,屏幕上显示的其他内容都是无法操作的。

安全桌面功能的用途就类似于要求按下“Ctrl-Alt-Del”登录,都是为了预防伪造程序。例如,如果有恶意软件伪造一个UAC提升对话框,并诱骗我们在该对话框中输入管理员帐户的密码,这就有可能导致严重的后果。而如果有了安全桌面,在显示安全桌面的时候,其他所有进程都无法于安全桌面进行交互,等于说UAC提升对话框运行在一个被完全隔离的环境中,因此极大地提高了安全性。

虽然有众多好处,不过很多人依然希望禁用安全桌面,此时可以运行Regedit打开注册表编辑器,定位到HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\Windows\CurrentVersion\Policies\System,在右侧新建一个名为“PromptOnSecureDesktop”的32位DWORD值,将其数值设置为“0”,并重启动系统。

另外很多人认为,虽然UAC可以显示提升对话框,但基本上,可能有人每次遇到提升对话框时,都会直接点击“继续”,这导致UAC的功能被完全忽略了。其实这也是可以理解的,毕竟UAC只是操作系统的一个辅助功能,它只能告诉我们某个程序打算使用管理员身份运行,而并不能区分这个程序到底是善意的还是恶意的,因此无论如何,对于程序目的的判断都是由用户进行的,作为操作系统,Vista并不能对用户的行为进行干预。而且就算每一次提升对话框都被允许了,也不意味着下一次提升也是可以允许的。这就像是要求乘坐汽车要带安全带,大部分情况下,有没有安全带都是一样的,而一旦遇到事故,区别就非常明显了。

除了上述问题外,很多人讨厌UAC的一点是,没有信任列表的机制。例如,如果工作需要每次都使用管理员权限运行某个程序,那么每次运行的时候都需要进行提升。如果能够增加一个“不再询问”的选项,以后执行同一个程序的时候都自动提升,相信会方便不少。

这个功能Windows本身并未提供,不过Symantec推出了一个名为Norton UAC Tool的工具,可以实现上述要求。该工具可以在这里免费下载。但是需要注意,截止撰写本文的时候,该工具目前还是测试版,可能存在未知的安全隐患或Bug,因此使用的时候请谨慎。

该软件的安装很简单,只要一路Next即可,安装完毕后不需要重新启动系统即可生效。在安装该工具后,UAC的提升操作会被Norton UAC Tool接管,如图25所示。在该对话框中,可以看到这个程序的详细信息,而只要选中“Don’t ask me again”,然后单击“Allow(允许)”或“Cancle(取消)”,该程序就会被添加到UAC Tool的白名单或黑名单中。随后,只要该文件没有被篡改或替换过(通过校验文件的哈希值判断)过,那么此时的选项就会一直生效。而一旦该程序感染了病毒(会导致文件的哈希值产生变化),或者产品更新,升级了程序的主文件,Norton UAC Tool将再次询问,并警告我们该文件可能已经被篡改。

clip_image050

图25,使用Norton UAC Tool接管UAC的提升,并为程序创建白名单

10,应用程序兼容性问题

每一次Windows操作系统进行过大的升级后,都会导致很多原本正常的程序无法运行,这就是所谓的兼容性问题。尤其是在Windows Vista中,因为Vista本身系统底层有很多改进,并且对程序的各种要求更严格,导致应用程序的兼容性问题愈加的突出。

很多人将应用程序的兼容性问题归咎于微软,其实严格说来,这有些冤枉微软了。毕竟Windows这个平台是由微软开发的,而在Windows上运行的软件需要使用微软提供的API(应用程序编程接口),同时也就必然需要遵循微软的一些规定。

然而实际情况是,很多程序的开发人员依然在沿袭以往的习惯,在按照Windows 9x甚至DOS时代的思路给最新版本的Windows开发程序。为了实现更好的性能、安全性,或其他表现,Windows已经经过了数次进化,虽然实现了这一目标,但代价就是有太多以往遗留的“陋习”在最新版本的Windows下遇到问题。

例如,一些编写很糟糕的程序,可能会默认将程序本身安装到C盘,哪怕操作系统所在盘符并不是C;某些程序可能会将所有配置选项一股脑保存在HKEY_LOCAL_MACHINE注册表键下,哪怕针对用户的设置也是如此;有些程序可能会在运行时随意在系统盘或Windows目录下创建临时文件夹…..程序员在开发程序时贪图方便省事的结果就是这些程序在要求越来越严格的新操作系统中可能会遇到各种奇怪的问题。

为了在Windows Vista下避免应用程序兼容性问题,首先应该看看自己所用的程序是否提供了最新的,兼容Vista的版本。Windows是使用率最高的操作系统,因此所有软件厂商都应该尽早为Vista做好准备。这种准备可能是多种形式的,例如通过补丁程序的方式改善程序和Vista的兼容性,或者直接退出完全兼容Vista的最新版本软件。因此在遇到兼容性问题的时候,建议首先访问程序开发商的网站,看看是否有更新程序或者新版本的程序可以使用。

如果某些程序已经失去了开发人员的支持(一些不太常用的行业软件经常属于这种情况),或者厂商没有提供兼容Vista的更新程序,那么还可以通过一些技术手段尽量让程序可以使用。

首先,请尝试使用管理员身份运行该程序,方法是在程序的快捷方式上单击鼠标右键,选择“以管理员身份运行”。这主要是为了强制让UAC对该程序进行提升,以便使用管理员特权运行程序。如果某个程序因为要写入到受保护的文件系统或注册表路径而导致无法正常使用,这样做也许可以解决问题。

如果使用管理员身份运行依然失败,则可以考虑使用Vista的应用程序兼容性向导。在程序的快捷菜单上单击鼠标右键,选择“属性”,并打开“兼容性”选项卡,随后可以看到图26所示的界面。

clip_image052

图26,使用兼容性向导运行老的程序,也许可以解决兼容性问题

首先,可以选中“用兼容模式运行这个程序”选项,并从下拉菜单中选择一个已知的该程序可以运行的操作系统。这样在运行该程序的时候,Vista就会单独为这个程序模拟出一个老版本Windows系统的环境。这样做一般就可以解决大部分常规程序遇到的兼容性问题。

如果上述方法依然无法解决问题,则可以根据具体情况,选择“设置”选项下的某个或者某几个选项,这时候请多尝试几种设置的排列组合,有时候也许可以获得出人意料的效果。

最后,如果是因为权限问题导致程序无法运行,而以管理员身份运行后可以正常使用,则可以通过选中“请以管理员身份运行该程序”选项,这样以后每次直接双击该程序的时候,程序都会触发UAC提升对话框,并使用管理员权限启动。

分享:

《Vista十大使用误区》有2个想法

发表评论

电子邮件地址不会被公开。 必填项已用*标注

发表评论前,先做个简单的数学题吧: * Time limit is exhausted. Please reload CAPTCHA.