欢迎光临 Enjoy IT (ITECN.NET) 登录 | 注册 | 帮助

Windows Server 2008中全新的仲裁/见证模式

Quorum Disk,又名仲裁磁盘,其目的是在协调集群节点间的故障转移(Failover)Windows Server 2003年代的集群中,对于单一的仲裁设备服务器群集是否执行failover,quorum disk说了算,也就是说这是一种独裁者的方式。当然了对于单一节点集群,由于不需要故障转移,自然也没必要使用quorum。至于多数节点集,虽然有对应于每个节点的单一quorum,但是quorum实际是不起作用的。

那么很显然,对于单一的仲裁设备服务器群集,是存在quorum disk的单点失败问题的,也就是说如果是quorum disk本身出了问题,无法协调控制failover过程,导致整个集群出现群龙无首的状况,对这个场景的改良,在即将发布的Windows Server 2008中有一个新的特性:Majority based cluster membership其目标就是给节点投票权,按照少数服从多数的原则避免可能存在的 quorum disk单点失败的问题,而且尽可能避免设置quorum磁盘。在Windows Server 2008可以按照以下原则选择集群模式:

l 不需要避免quorum disk单点失败的,采用Disk Only方式,在这种模式中,仅有quorum disk具备投票能力,其实就是之前Windows Server 2003的单一仲裁设备服务器群集

l 需要避免quorum disk单点失败的,采用Node And Disk Majority模式,在这种模式中,quorum disk和各节点都一个vote

l 需要避免共享数据存储磁盘单点失败的,采用Node Majority模式,这种模式中每个节点有独立的存储设备,用来存放共享的数据信息,而且在硬件上实现存储设备间的数据同步,因为在这种模式中,不存在也不需要quorum disk,各个vote凭借自己的一票就可以对failover过程进行协调,这种场景主要是应用于银行金融行业的异地灾备方案

l 需要支持GeoClusters(节点处于不同地理位置的集群方式)而且应用对共享数据记录要求不高的前提下比如设计DHCP Services的高可靠性时,采用Node And File Share Majority模式,这种模式是选择节点之外服务器上的共享文件夹做见证,此见证共享文件夹和集群中各节点各持有一个vote,在出现故障的时候,通过投票机制实现failover

发表于 作者 chengzh | 4 评论
归档在:

Vista多媒体播放和网络吞吐率

前段时间网上新出现了一条新闻,在Windows Vista中播放多媒体文件会导致网络性能降低。结果证明这个问题确实存在,但确实设计特性。今天看到Mark Russinovich(Windows领域的大牛,相信很多人对他都有不少的了解)的一篇Blog,对这个问题进行了比较合理的解释。

我翻译了这篇Blog,希望对英文不好的朋友有所帮助。当然,水平有限,翻译的内容难免会存在疏漏,还望大家指正。

通过这篇文章我们有什么体会?

1,对于百兆网络,或者只安装了一块网卡的电脑,完全不用担心这个问题

2,如果是千兆网络,或者有多块网卡,那么问题比较棘手。尤其是有多块网卡的百兆网络,希望相关的补丁能尽快发布。

3,看来那个售价超贵的“杀手级”游戏网卡还是有必要存在的。

下面是原文内容:

几周前,在2CPU 论坛由dloneranger发布的帖子介绍了在他的Vista系统中播放音频或视频文件时网络吞吐量降低的情况。其他人也提到自己遇到了同样的问题,同时上周大家的注意力被其他站点就同一个问题的讨论所吸引,包括Slashdot以及Zdnet博客Adrian Kingsley-Hughes

很多人的推测是正确的,在播放多媒体文件时网络性能的降低确实是由于Multimedia Class Scheduler ServiceMMCSS)服务的工作原理导致的,这是Windows Vista中的新功能,我在TechNet Magazine有关Windows Vista内核变化的一系列文章中进行过介绍。多媒体播放需要有一个恒定的媒体流传输速率,而如果无法满足这个要求,播放就会变得断断续续或不连贯。MMCSS服务由通用服务宿主进程Svchost.exe承载,并且要比音频和视频文件播放时的优先级更高,只有这样才能防止其他任务干涉播放软件对CPU的使用:

当一个多媒体应用程序开始播放的时候,改程序使用的多媒体API会调用MMCSS服务以提高播放线程的优先级为“实时”,这个范围内的优先级在16-31之间,在时间上对应每10ms的间隔内最多8ms,当然,具体还取决于播放线程需要多少CPU时钟周期。因为其他线程以动态优先级运行,往往是低于15的,因此哪怕是对CPU时钟周期需求很多的程序也不会干扰到播放。

要看到这个现象,你可以在Windows Media PlayerWMP)中播放一个音频或视频剪辑,同时运行性能和可靠性监视器(开始-运行-Perfmon),选择性能监视器节点,在对象实例中为所有Wmplayer实例添加Priority Current计数器。随后将图表垂直比例的最大值设置为31Windows上最高的优先级),随后你就能直接看到被提升了优先级的线程,如下图所示的21

除了可能被其他线程影响外,媒体文件的播放还可能被网络活动所影响。当一个网络数据包到达系统后,会触发一个CPU中断,这将导致数据包到达的设备的驱动程序执行一个Interrupt Service RoutineISR)操作。当这个ISR运行的时候,其他设备的中断会被临时阻止,因此ISR通常会进行设备book-keeping操作,然后用一个更耗时的操作将数据从收到的设备传输到启用了设备中断的延迟过程调用(Deferred Procedure CallDPC)中。虽然DPC的执行是允许中断的,不过在运行了这些东西的处理器上,它的优先级要比其他任何线程还要高,无论线程的优先级是什么,这就有可能影响到播放媒体文件的线程。

网络DPC的接收操作是最“昂贵”的,因为这个过程中包括了将数据包传递给TCP/IP驱动的过程,而这个过程有可能导致很大的运算量。TCP/IP驱动会验证每个数据包,判断数据包所用的协议,更新连接状态,找到接收数据包的应用程序,然后将收到的数据复制到应用程序的缓冲中。下面的Process Explorer截图显示了当我从别的系统上复制大文件的时候用于DPCCPU时钟周期是如何变化的:

Vista的开发过程中对MMCSS的测试显示,就算有线程优先级提升(thread-priority boosting)功能,较重的网络通讯依然可能导致需要足够长时间执行的DPC妨碍到播放线程对多媒体文件的流畅播放,最终的播放结果可能会断断续续。因此MMCSS的“反停顿”机制被扩展为包含了对网络活动的调节。这个功能是通过给NDIS设备驱动天价了一个指令实现的,而NDIS是将网络适配器收到的数据包传输给TCP/IP驱动的主要组件,通过添加指令,NDIS每毫秒可以“标示”或者传递最多10个数据包(也就是每秒10000个)。

因为标准以太网Frame大小是1500字节左右,每秒将数据包数量限制为10000等于将网络吞吐率限制在最大15MB/s。百兆网络最多可以实现的吞吐量是12MB/s,因此如果你的系统在百兆网络中,你可能看不到任何影响。然而,如果你有千兆网络,而且发送端和你的Vista接收端都有千兆网络适配器,那么你的网络吞吐率会被降低到正常情况的15%

然而NDIS调节功能的代码中很不幸有一个Bug,如果你有多个网卡,这会导致调节幅度被增大。例如,如果你的系统中同时安装了有线和无线网络适配器,NDIS每秒钟会处理最多8000个数据包;如果安装了三块网络适配器,每秒钟可以处理的数据包数量会降低到6000个。每秒6000个数据包等于9MB/s,这个结果甚至在百兆网络中的影响都是很明显的。

在一台安装了三个网络适配器的笔记本电脑上,我从其他系统中复制一个大文件,同时用WMP播放歌曲,借此让调节功能生效。下面的任务管理器截图显示了复制的吞吐量占用原本有大概20%,但是在开始播放歌曲的时候在千兆网络上降低到只有6%

你可以在性能监视器中,在Network类别下添加“packets received per second”计数器来监控由NDIS收到的数据包数量。下图中,你可以看到收到的数据包数量的变化趋势和我上面提到的结果是完全一样的。NDIS处理的数据包数量并不满足理论上的最大6000个的结论,很可能是因为和远程系统握手的缘故。

尽管调节功能的限制程度如此之大,互联网通讯,哪怕最好的宽带连接都不会受到影响。那是因为在你的系统和互联网上其他系统之间的中间连接(intermediate connection)的多样性,以及传输的数据包片段可能降低数据包传输速度,因此对这类数据包的影响远不如系统传输数据时的影响大。

Vista使用的调解率的标准来自多次实验,并能确保在一颗CPU的百兆网络中保持尽可能高的数据包接受率的条件下防止播放过程产生停顿。这个硬性的限制对于当今的,具有多核高速CPU以及千兆网络的系统来说影响是很微弱的,而除了修复在安装了多个网络适配器上的系统中存在的Bug,我们的网络Team正在和MMCSS Team合作,希望将对网络速度的影响降到最低,但同时尽可能保证播放的流畅感受。

更多详细信息请关注我的Blog

发表于 作者 Liu_hui | 5 评论
归档在:

分辨率的故事

本文已发表在《个人电脑》杂志,请勿随意转载

在前几年,LCD显示器还是一种比较奢侈的产品,售价很高,而且性能参数很差,属于低性价比产品的典型。然而技术的发展是很快的,短短几年时间,LCD面板的生产技术得到了长足进步,大屏幕LCD显示器性能越来越好,售价越来越低,感兴趣的人则越来越多。
然而很多购买了LCD显示器,尤其是大屏幕LCD显示器的人买回来之后才发现,怎么LCD显示器不如自己想象中的好。
例如,原本在CRT显示器上显示很好的文字内容,在LCD显示器上为什么变得那么小,看起来很费眼睛。买了一台24寸的宽屏LCD后却发现,很多网页无法适应这么大的分辨率,将浏览器窗口最大化之后,网页内容只能居中显示或者靠左显示,旁边有很大一部分面积都被浪费了。想要在LCD显示器上玩一些低分辨率的老游戏,可是游戏的显示效果为什么那么差劲。
本文会告诉你在遇到这些问题后该如何解决。

显示器的技术指标是什么意思

 在买显示器之前,很多人都会详细了解显示器的性能参数,例如显示面积、分辨率、点距、色深等,然而这些参数分别有什么作用?对显示器的显示效果有什么影响?因为本文着重讨论显示面积、分辨率以及点距对显示器的影响,因此主要会介绍这三个参数。同时本文的主要内容仅适合LCD显示器。
在介绍之前,首先说一个很现实的问题。前两天我买了一台22寸的宽屏LCD显示器。在试用了新显示器后,我父亲很疑惑,为什么显示器尺寸变大了,显示的文字反而更小了?不像电视机,尺寸越大,显示的内容就越大?
其实对很多新手,这些问题是很常见的。这就要从显示器的分辨率和点距说起。从显示器的工作原理可以知道,其实显示器是由很多小点组成的,这些最小的点就是我们常说的“像素”。例如,对于分辨率为800×600的显示器,这表示显示器上横向是由800个像素点组成的,纵向由600个像素点组成,那么整个显示器上就有800×600=480000个像素。
对于最古老的模拟CRT电视机,无论电视机的尺寸有多大,分辨率一般都不会超过300线,也就是说,模拟电视上,纵向像素数一般都是低于300的。而且因为电视信号的分辨率通常都是固定的,因此电视机的分辨率不会随着屏幕尺寸的增大而增大(增大的只是每个像素的大小,可以理解为点距)。所以在看电视的时候我们会发现,同样的视频信号,在屏幕越大的电视机上观看,显示的内容会越大,但是越不清晰。大屏幕电视机往往远距离观看效果更好。
计算机显示器就不同了,随着屏幕尺寸的增大,分辨率往往都是增大的(点距的变化很小)。因此在计算机显示器上,无论屏幕的大小,显示内容看起来清晰度几乎是一样的。然而这却存在一个问题,因为LCD显示器的画面是由很多像素点组成的,因此像素点越小(点距),显示结果就越细腻。然而太小的像素点会导致文字内容一样很小,看不清文字内容。同时像素点越小,对LCD面板的制造工艺要求就越高,产品也就越贵。那么怎样在点距、分辨率、尺寸以及成本之间取舍?
目前市场上常见的计算机LCD显示器尺寸有19寸、19寸宽屏、22寸、24寸(大于19寸的几乎都是宽屏),这些尺寸和点距以及分辨率之间的关系如下表所示。

尺寸

分辨率

点距

19

1280×1024

0.294mm

19寸宽屏

1440×900

0.285mm

22

1680×1050

0.282mm

24

1920×1200

0.270mm

从这些尺寸的对比正好对应了大部分人对这些显示器的感觉。默认分辨率下,19寸显示器显示的文字比较大,但是图片内容不够细腻,很“毛糙”;24寸显示器显示的图片内容很细腻,但是文字内容又太小;19寸宽屏和22寸显示器则处于比较“折衷”的位置。正因为如此,22寸被很多人成为LCD显示器的“黄金尺寸”。
显示器的硬件指标很复杂,但我们只需要了解这么多。下面一起讨论一下,怎样能够更加充分地利用好已经买回来的LCD显示器。

使用ClearType技术增强显示效果

最早在Windows XP中,微软提出了一种叫做ClearType的显示增强效果,可以用于增强LCD显示器的显示质量,提高文字可读性。那么这个功能到底有什么作用?
前面已经说过,显示器上显示的图案实际上是由一个一个像素组成的,而像素是有大小的(点距),如果我们希望用像素组成一个字母“C”,很明显,因为有弯曲的线条,因此在使用像素组合的时候,在弯曲的地方会留下明显的锯齿。
ClearType技术则可以在组成文字的象素点之间填充过渡色,以达到给文字“抗锯齿”的效果。对比下面两张图片,左侧一张是关闭ClearType技术后拍摄的显示器显示内容,而右侧是开启该技术后获得的。很明显,在应用了ClearType技术之后,字体的边缘显示更加平滑,当然,文字也就更加赏心悦目了。

 

该技术在Windows Vista下是默认启用的,不过在Windows XP中可能没有启用。如果想要在Windows XP下启用该功能,请在桌面空白处单击鼠标右键,选择“选项”,打开显示选项对话框。接着打开“外观”选项卡,单击“效果”按钮,打开效果对话框。选中“使用下列方式使屏幕字体的边缘平滑”选项,接着在下拉菜单中选择“清晰”即可。要注意,大部分情况下,该功能只对LCD显示器有效,同时需要设置显卡使用32位色才可以使用。
如果在启用ClearType后发现显示效果并不好,这时候可以试试看使用微软的提供的程序进行微调。用Internet Explorer浏览器访问http://www.microsoft.com/typography/cleartype/tuner/Step1.aspx ,在这里安装一个ActiveX加载项,然后根据网页上的显示选择你觉得最“好看”的图片,即可完成调整过程。

调整dpi

很多人在买了大屏幕LCD分辨率后,因为点距的原因,使用默认分辨率觉得文字变得太小,不利于阅读,往往会在大屏幕显示器上使用低分辨率,例如让24寸LCD显示器工作在1440*900的分辨率上。其实这样做就是大材小用,我们可以通过其他方法让显示器使用默认分辨率,但同时让文字更大,更易于阅读。
前面已经说过点距和分辨率对显示效果的影响,其实这里还有一个很重要的参数:dpi(dot per inch,每英寸点数)。该参数定义了像素的密度,也可以理解为解析度。简单来说,dpi决定了显示器上一条一英寸长的线条是由多少像素点组成的。一般情况下,我们可以买到的非专业LCD显示器都是96dpi的,这意味着在大部分显示器上,一英寸长的线条实际上是由96个像素点组成。
那么只要人为调整Windows的dpi数,就可以在显示器上获得更好的显示效果。所有新版本Windows都具有这个功能,不过Windows Vista是其中做得最好的。我们一起试试看怎样在Windows Vista中进行调整。
为了能够对调整前后的效果进行对比,首先在默认设置下,对整个屏幕抓图,如下图 所示。

  (大图

这是在一台22寸宽屏LCD上,使用默认的1680×1050分辨率截取的。
在桌面的空白处单击鼠标右键,选择“个性化”,打开个性化窗口,然后单击窗口左侧“任务”列表中的“调整字体大小”链接,打开DPI缩放比例对话框(如下图所示)。

 

 在这里直接选择“更大比例”选项即可,这样可以设置Windows使用120pdi的精度,而因为显示器的pdi数是固定的,因此越大的Windows dpi设置就会让Windows下显示的文字越大。同时,如果希望使用其他pdi设置,可以单击“自定义PDI”按钮,在随后出现的自定义DPI设置对话框中选择希望使用的比例。
设置后单击“确定”,并重启动系统。这时候整个桌面的截图成了下面的样子。对比图2可以明显感觉到,在分辨率相同的情况下,更高的dpi带来了更大的显示文字(开始菜单和控制面板窗口中的文字),但同时图像等内容(屏幕右侧的Windows边栏)依然细腻,整个显示结果的可读性都很好。

 (大图

 并排显示或放大网页

很多使用大屏幕LCD显示器的人还会遇到另外一个问题,这主要发生在浏览网页的时候,那就是,将浏览器窗口最大化后,很多网页都占据屏幕中央或者左侧的一部分区域,显示器上大量区域都被浪费了。
其实这样做是有原因的。毕竟大部分人依然在使用老的显示器,因此在设计网页的时候,大部分设计师都会以1024×768分辨率为标准进行设置,这样网页才可以在大部分人的浏览器中显示。
这时候很多人都希望能让浏览器放大显示网页,例如在Internet Explorer的“查看-文字大小”菜单中选择“较大”、“最大”等设置。然而这个设置对有些网页并不会生效,因为这些网页往往使用CSS来定义网页字号,并不是用浏览器的设置。同时这种方法只能放大文字内容,对于版面比较复杂的网页,例如包含了较多图形或者表格,还有可能导致网页内容错位。
这种情况下,如果你用了Internet Explorer 7,那么可以试试看Internet Explorer的网页缩放功能。在Internet Explorer 7窗口底部的状态栏有一个缩放工具,直接单击该工具就可以让网页的完整内容按顺序以125%、150%、100%的比例显示。如果希望自定义缩放比例,只需要单击该工具右侧的箭头,即可在弹出菜单中进行选择。或者也可以单击“自定义”,手工输入要使用的缩放比例。

 

让我们试试看实际的显示结果。将显示器分辨率设置为1680×1050,使用默认的96dpi,并将Internet Explorer 7浏览器窗口最大化,下面6图是100%显示的网页,图7是150%显示的网页。很明显,不仅文字,所有图片内容被放大了,而且网页的结构基本上都能保持原样。

   

除了可以让网页缩放显示外,我们还可以在宽屏幕显示器上并排显示多个窗口。例如,要写文章,但同时还要查资料,那就可以让Word窗口和Internet Explorer窗口并排显示,这样就不用在多个窗口之间切换,间接提高工作效率。除了并排显示外,我们还可以让Windows对窗口进行层叠或者堆叠。
假设需要并排显示窗口,可以这样操作:如果桌面上打开了多个窗口,首先将所有不需要并排显示的窗口全部最小化(注意,该功能只能对没有被最小化的窗口使用),同时让所有需要并排显示的窗口处于最大化或者还原状态。接着用鼠标右键单击Windows任务栏的空白处,从右键菜单中选择“并排显示窗口”,这样虽有没有被最小化的窗口都会自动被Windows并排显示在一起。基本上,22寸或24寸的宽屏显示器,并排显示两个A4的Word文档问题都不大。

  (大图

 除了并排显示,选择“层叠窗口”或者“堆叠显示窗口”命令,Windows还可以帮我们以其他方式自动排列没有被最小化的窗口。通过灵活使用这些排列方式,大屏幕显示器可以更好地帮助我们完成工作。在使用了任何一种显示方式后,再次在任务栏空白处单击鼠标右键,任务栏菜单中会显示相应的撤销命令,例如并排显示窗口后,就会出现“撤销并排显示”的命令,选择该命令后窗口的排列方式就会被复原。
如果你系统中安装了微软的鼠标驱动(不一定非要有微软的鼠标),那么在按下鼠标滚轮或者中键后,所有打开的窗口(包括被最小化的)都会并列显示在屏幕上,将鼠标指针移动到相应的窗口后,该程序的窗口就会被放大显示,这时候按下鼠标左键即可切换到该窗口。个人感觉这个功能要比Windows Vista自带的Flip 3D功能更实用。

 (大图

 让老游戏更适合新显示器

在使用LCD显示器,尤其是高分辨率LCD显示器玩老游戏的朋友,最头疼的可能是分辨率不匹配的问题。自己的显示器已经可以达到宽屏的1680×1050的分辨率,而游戏最高只支持非宽屏的1024×768分辨率。这时候,游戏往往被放大以全屏显示。但这又带来另一个问题,显示器是宽屏的,游戏能支持的分辨率并不是,那么游戏画面被放大后会变形,而在有些游戏里,画面显示比例不准确可能会严重影响到我们的发挥。
这种情况下可以考虑调整显卡的设置。以ATI显卡的催化剂驱动为例,打开催化剂控制中心的高级模式,依次进入“数字面板属性-属性”,在“图像缩放”选项下选择“使影像居中显示”,这样以后玩低分辨率的游戏,游戏的画面就会居中显示在显示器的中央,同时画面四周会显示黑边。

 

 对于nVidia或者S3等品牌的显卡,安装最新的驱动后,也能在设置程序中找到类似的选项。

杜绝电影中讨厌的黑边

 现阶段,很多购买宽屏显示器的人都是为了更好的电影欣赏效果。因为大部分电影在宽屏显示器上都可以全屏显示,不会像非宽屏显示器那样在画面上下留下难看的黑边。然而,当你买回宽屏显示器后可能发现,有些电影依然存在黑边。
原因是多方面的,主要是因为电影的画面比例目前还不统一,而宽屏计算机显示器的显示比例一直都是16:10,因此黑边也就在所难免了。这时候有两种选择,第一种,舍弃电影画面中的部分内容,全屏显示电影画面;第二种,充分利用画面下方的黑边显示字幕。下文会以KMPlayer播放软件为例进行介绍。其他播放器可能也具有类似的功能。
如果完全不希望看到黑边,但可以接受可视范围的损失,那么可以设置过扫描输出。这种工作方式的原理是,将比例和显示器不一致的电影画面进行剪裁,减掉画面四周的区域,然后将剪裁到一致的画面全屏显示在显示器上。
在KMPlayer中,用鼠标右键单击画面,然后指向“屏幕控制”,接着选择“全屏幕(过扫描)”,对比下图,虽然过扫描方式损失了画面四周的内容(主要是左右两侧),但至少讨厌的黑边看不到了(上下两侧)。

   

 如果不希望画面的可视范围有任何损失,那么对某些电影,就只能留着讨厌的黑边,但我们可以把黑边充分利用起来,用来显示字幕,这样字幕就不会遮盖电影画面的内容。要注意,这个方法仅适合外挂的字幕,对于已经嵌入到电影画面内的“硬字幕”无效。
还是以KMPlayer为例,首先需要将视频渲染器设置为VMR9窗口化,方法是在画面上单击鼠标右键,依次指向“视频(高级)-视频渲染器”,然后选择“VMR9窗口化”。然后设置字幕描绘到覆盖表面,方法是在画面上单击鼠标右键,指向“字幕”,然后选择“描绘到覆盖表面”。接着在播放电影的过程中,按下“Ctrl-[”或“Ctrl-]”组合键即可调整字幕在垂直方向上的位置,前者可以降低字幕的高度,后者可以升高。只要将字幕的高度降低到屏幕底部的黑边范围内即可。同时为了更加充分地利用黑边的范围,我们还可以调整字幕文字的大小,直接按下“Alt-[”和“Alt-]”快捷键即可放大或缩小文字。

    

其实大屏幕的LCD显示器,尤其是宽屏幕显示器的显示比例更符合人眼的视角,长时间观看要比非宽屏更舒适。只不过都是一些软件以及设置上的缺陷导致很多人觉得大屏幕或者宽屏没什么太大用处。相信通过本文,你已经了解了如何设置软件才能更好地满足大屏幕显示器的需要。那么下次换显示器的时候,何不考虑一下呢?

发表于 作者 Liu_hui | 7 评论

看清Windows Vista中的安全提示信息

本文已发表在《个人电脑》杂志,请勿随意转载

当我们在使用Windows执行大部分操作的时候,Windows都会用提示信息告诉我们操作的执行结果。例如,操作是成功完成还是失败了,如果失败了,那么失败原因是什么,或者在操作过程中需要注意的事项等。看清这些提示信息(尤其是错误信息和注意事项)有助于我们更好地完操作。因此本文将会对Windows Vista中一些常见的安全提示信息进行说明。

 Internet Explorer中的各种信息

 在Windows Vista中,和Internet Explorer有关的信息大部分都出现在地址栏和信息栏(图1),这些信息可以告诉我们当前访问的网站是否有安全问题,是否是欺诈网站,以及是否有其他一些需要注意的信息。

 

下文会将Internet Explorer中常见的提示信息分为安全证书相关、安全设置相关、控件相关这三个类别来介绍。

和安全证书有关的提示信息

为了保护我们的在线隐私,很多网站,尤其是银行和证券公司等提供金融服务的网站都会使用安全证书加密我们的浏览器和网站服务器之间的通信,这样双方的网络通信就算被其他人截获也不会造成损失。因此很多人在访问网站的时候,如果发现网站使用了加密通讯,往往都会觉得很安全,自己的隐私受到了保护。
通常,判断一个网站的通讯是否被加密的方法有两个:

1,网站的地址是否是“https”开头的,因为只有加密网站的地址才以“https”开头。
2,IE浏览器的状态栏是否有一个黄色的锁头图标,因为只有访问加密网站的时候才会出现该图标。

然而有时候就算一个网站同时满足了这个条件,也有可能是有问题的。

不信任的证书
因为加密网站需要用到安全证书,而一些诈骗网站可能会使用伪造的或者颁发给别人的安全证书来加密自己的网站通讯。
例如当我们访问一个网站的时候,IE显示了图2所示的错误信息,告诉我们这个网站的安全证书不被信任。这意味着网站可能并不是自己宣称的角色。例如,如果你单击电子邮件中的链接进入某个银行的网站时IE显示了这样的页面,那就表示该网站提供的加密证书无法证明自己的合法身份,有可能是假的(少数情况也有可能是真的)。这时候,最好的办法就是关闭该网站。而如果依然希望看看这个网站的内容,则可以单击“继续浏览此网站(不推荐)”链接。

 

单击“继续浏览此网站”链接后,我们可以看到网站的内容,不过IE这时候会用更明显的方式提示我们注意。如图3所示,整个地址栏都变成了红色,并且带有“证书错误”字样的按钮,单击该按钮后可以看到一个弹出菜单,里面显示了详细的错误信息。

 

 对于这类站点,如果不希望单击“继续浏览此网站”链接就能继续访问,而是希望不提供任何选项,直接禁止访问,可以配置组策略(注意,只有Windows Vista商业版、企业版和旗舰版可以使用组策略功能)实现。运行gpedit.msc打开组策略编辑器,定位到“计算机配置-管理模板-Windows组件-Internet Explorer-Internet控制面板”,启用“阻止忽略证书错误”这条策略即可。
但是还需要注意,有时候正常网站也会遇到这类错误。一个网站被加密,通常有两个原因:保护网站服务器和客户端浏览器之间的通讯不被窃听,或者证明自己的身份。例如,某个网络交易网站,不仅需要保护通讯不被窃听,还要保证客户能相信这个网站就是该商户的官方网站。对于这种用途,网站使用的安全证书必须是经过证书颁发机构信任的,这类证书往往都需要付费购买。另一种情况,有些人可能只希望保护自己服务器和客户端浏览器之间的通讯不被窃听,至于身份是否真实可靠,这不是重点。这种时候就没必要在证书颁发机构那里购买昂贵的安全证书,这类网站往往使用自己颁发给自己的证书。而这类证书往往会被IE认为是有问题的,并显示图2和图3的错误。对于这类错误,目前没有什么好的解决办法,只能通过单击“继续浏览此网站”链接浏览。

被冤枉的网站
还有另一种情况。假设一个网站的地址是www.example.com(这是一个虚构的地址),网站已经申请了安全证书,这个证书表明该证书被颁发给了“www.example.com”,但如果我们使用类似“https://example.com”这样的地址去访问,虽然我们知道这还是那个网站,但IE会认为“example.com”这个网站使用了另外一个网站“www.example.com”的数字证书,是假冒的(图4)。

 

 对于这种情况,我们只要给访问的网站域名里添加“www”字样,将域名补充完整即可避免看到证书错误。

正常状态的证书
如果在访问一个加密网站的时候,IE的地址栏没有出现红色背景,而是出现一个黄色的锁头图标(图5)或者地址栏变为绿色(图6,这种情况目前还很少,以后估计会逐渐增多),那就证明该网站是安全可靠的。对于这类网站,我们可以放心浏览,并提交相应的个人信息。但这也只能保证我们给网站提交信息和浏览页面的过程是安全的,至于提交的个人信息如何使用,这取决于访问的网站。

 

和安全设置有关的错误信息
在IE中,很多选项的默认设置都很保守,可以最大程度实现安全性。然而很多时候我们可能因为不了解某些选项的具体作用而做出了错误的设置,不仅会影响IE的使用,还有可能会导致一些安全问题。而更严重的是,我们根本不知道自己的哪些操作会让IE变得不安全,而有时候如果其他软件修改了IE的设置,我们也无从得知具体修改了哪些设置。


安全设置检查
在IE 7中,当我们在Internet选项对话框中对一些选项进行设置的时候,如果自己的设置会降低IE的安全性,那么IE会使用红色的背景将这些选项标记出来,提醒我们注意。同时,一些修改后可能会降低IE安全性的选项,还会用文字注明“不安全”,如图7所示。

对于这类选项,如果在知道会影响IE安全性的情况下依然想要使用不安全的设置,那么在应用了设置后,IE会用一个信息栏提示我们当前的设置不安全,同时再次打开Internet选项对话框后也可以看到安全设置提示(图8)。不仅如此,在Windows Vista的系统通知区域也会出现一个红色的盾牌图标提示我们注意。

 

 要解决安全问题,我们有三种办法:

1,打开Internet选项对话框,依次打开每个选项卡,看哪个选项卡上标有“安全设置导致计算机存在安全风险”的提示,如果某个选项卡上有,则打开该选项卡上的每个选项,找到背景是红色的选项,将其修改为安全的设置(这个方法比较麻烦)。
2,单击IE窗口上的黄色信息栏,选择“修复设置”选项(这个方法最简单)。
3,双击系统通知区域中的红色盾牌图标,打开Windows安全中心窗口,单击“其他安全设置”类别下的“还原设置”按钮(这个方法相对简单)。

如果因为一些特殊的需要,必须使用某些不够安全的设置,但又不想看到安全性提示,那么可以运行gpedit.msc打开组策略编辑器,定位到“计算机配置-管理模板-Windows组件-Internet Explorer”,启用“关闭安全设置检查功能”这一策略。

混合内容
在访问一些加密网站的时候,我们有时候可能会看到图9所示的对话框。这是什么意思?

 假设这种情况:我们正在访问某个网络交易网站,因为使用了加密技术,因此我们可以完全信任网页上显示的内容,并提供自己的信息。但如果该网站被攻击者破坏了,正常网页中嵌入了来自其他站点的内容(可能是骗人的图片或者给用户系统中安装间谍软件的恶意脚本或者木马),因为我们是在访问加密网站,因此从心理上就没有足够的防备,因而自己的系统也被成功入侵。
为了防范这种问题,IE可以在我们访问包含了非加密内容的加密网页时发出提示。简单说,假设我们正在访问https://www.example.com这个网站的首页,按理来说,访问的所有内容(文字、图片、脚本等)都应该位于www.example.com的服务器上,同时必须通过SSL加密线路传送到我们的浏览器。但如果这个网站的页面上包含了一些到非加密网站的文件(可能是网站设计的疏忽,或者攻击者的篡改),那么IE就会显示图9所示的对话框。如果希望显示非安全内容,可以单击“是”,否则可以单击“否”,这样安全的网页内容依然会被加载,但是不安全的内容会被过滤。
这是一个好功能,但如果你经常在访问一些重要网站的时候遇到,也可以进行一些设置来避免。打开Internet选项对话框的安全选项卡,单击“可信站点”,然后单击“站点”按钮,在随后出现的可信站点对话框中将你经常访问但遇到这类信息的网站地址添加到可信站点区域。然后在Internet选项对话框的安全选项卡上选中可信站点,单击“自定义级别”按钮,在随后打开的安全设置对话框中找到“显示混合内容”选项,选中“启用”。

注意:为什么要现将目标站点添加到可信站点区域后才设置?不能直接设置Internet区域吗?其实这也是为了安全。毕竟希望进行这样设置的都是我们经常访问的,信任的网站,而网上其他无法被充分信任的网站还有很多。因此先把目标网站添加到可信站点区域再设置,这样该设置就只能对我们经常访问的网站生效,对其他大部分网站还会首先进行提示,这样在保证易用性的同时还保持了一定的安全性。 

和控件有关的提示


很多网页为了实现特殊的功能,往往会需要给IE中安装控件。例如要在IE中显示Flash动画,就需要安装Adobe的Flash控件;要进行Windows正版验证,就要安装微软的WGA控件。然而,并不是所有控件都是我们需要的,有很多网站以控件的形式诱骗用户安装所谓的“流氓软件”,这类软件一旦安装到系统中,就不容易彻底卸载,而且这类软件一般还会进行一些不够道德的操作,例如记录并发送用户的网页浏览习惯、在系统中显示广告,劫持并锁定IE首页等。为了防范不良控件,IE中增加了很多专用功能。

不带数字签名的控件
要正常安装控件,那么控件的安装文件必须包含有效的数字签名,这样IE才会询问我们是否安装;如果不带数字签名,那么IE根本不会询问,直接就会禁止安装。
数字签名有两个作用:1,证明该控件的来源和作用,例如从数字签名中,我们可以知道该控件是哪家公司开发的,有什么作用;2,证明该控件在发布后没有被篡改,例如,如果一家公司开发了一个没有恶意的控件,放在自己的网站上供人下载,但有人攻破了该公司的网页服务器,给控件中捆绑了恶意代码,这就会导致控件的数字签名失效(哪怕文件只有一个字节的变动,都会导致数字签名失效),因此也就不会被提示安装。
如果访问的网页需要安装不带数字签名的控件,那么我们首先会看到IE的信息栏告诉我们说Internet Explorer已经停止从此站点安装ActiveX控件到计算机。如果单击该信息栏,选择“安装ActiveX控件”选项,随后可以看到图10所示的界面,这样不带数字签名的控件根本无法安装。

 

当然,这种限制有效地保护了系统安全,但有时候我们可能确实需要安装某个不带签名的控件,这时候又该怎么办?打开Internet选项对话框的安全选项卡,选中Internet区域,单击“自定义级别”按钮,在随后出现的安全设置对话框中找到“下载未签名的ActiveX控件”选项,选择“启用(不安全)”。随后关闭所有对话框,刷新网页,单击信息栏,指向“已阻止的安装”,接着选择“安装ActiveX控件”选项即可。安装好后记得将该选项恢复为默认的安全设置。
带有数字签名的控件
带有数字签名的控件很简单,只要单击相应的选项进行安装即可。不过在安装的时候一定要注意看自己安装的控件是谁开发的,有什么作用。因为现在很多以控件形式存在的流氓软件也是带有数字签名的,因此并不能凭借是否带有数字签名为标准判断某个控件是否是流氓软件。

UAC的各种提示信息 

在Windows Vista中,我们最多遇到的可能并不是Internet Explorer的各种安全提示,而是UAC的提示。基本上,在安装或运行某些软件,或者对系统的一些设置进行调整的时候,都会看到和UAC有关的提示。
UAC的提示信息主要有两个类别。如果当前登录的是管理员帐户,那么UAC提示信息就是一个简单的对话框,上面显示了要执行的操作,并提供了按钮供我们选择继续操作或者禁止操作;如果当前登录的是非管理员帐户,那么UAC提示信息就是一个类似登录对话框的界面,上面显示了要执行的操作以及本机现有的管理员帐户,我们需要单击其中一个帐户 ,输入正确的密码,才能继续。
现在有关UAC的介绍已经有很多,因此本文不打算过多讨论。本文只打算介绍各种UAC提示信息的含义以及如何设置能在保证安全性的同时将UAC对我们的影响降低到最小。

打开或关闭安全桌面
默认情况下,当显示UAC界面的时候,整个屏幕会变黑,然后除了UAC对话框外,其他内容都会变暗显示,无法操作,只有UAC对话框可以操作,这就是安全桌面。
使用安全桌面的主要目的是为了防止其他恶意软件制造假的UAC提示框骗取用户的密码,因为在安全桌面上,只有系统自己的UAC对话框可以操作,其他程序的界面都只能观看,无法操作。因此就算恶意软件伪造了一个惟妙惟肖的UAC对话框,因为无法伪造安全桌面,因此也无法得逞。然而在一些配置不够高的计算机上,显示安全桌面的时候会导致系统段时间的停顿,因此很多人并不喜欢这一功能。如果希望禁止安全桌面,请运行secpol.msc打开本地安全策略控制台,定位到“本地策略-安全选项”,禁用“用户帐户控制:提示提升时切换到安全桌面”这一策略即可。
优化提升提示
Windows Vista中定义了两种等级的用户帐户:标准帐户和管理员帐户,同时还为应用程序定义了两种模式(运行级别),分别是标准用户模式和管理员模式。标准用户帐户可以使用大部分软件,可以更改不影响其他用户以及系统整体安全性的系统设置,而管理员帐户则对计算机拥有完整的控制权,并且可以修改任何设置。当用户启动一个程序的时候,他的访问令牌以及相关联的管理员特权就会传递给这个程序,这等于把自己在本机上的所有权力和特权都给了这个程序。进一步说,所有程序在安装过程中都被配置为只能运行在特定的模式下,任何标准模式下运行的程序执行的任务在需要得到管理员特权的时候都必须通过用户的允许,而这一允许过程就叫做提升提示。
在本地安全策略控制台的“本地策略-安全选项”下有几个以“用户帐户控制”字样打头的策略,这些策略控制了提升提示的详细情况,其中比较重要的有:

用户帐户控制:标准用户的提升提示行为 决定了使用标准用户帐户登录的用户在运行管理员模式的程序时是否可以看见提升提示。默认情况下,使用标准用户帐户登录的用户在运行管理员模式的程序时会被要求输入管理员帐户的登录凭据,但通过配置这个选项,这样用户就不会看到提示。在这种情况下,用户将无法通过提供管理员帐户的登录凭据获得提升后的权限。但该设置并不能阻止用户用鼠标右键单击程序的快捷方式,然后选择以管理员身份运行的方式进行提升。
用户帐户控制:管理员批准模式中的管理员提升提示行为 决定了受限于管理员批准模式的管理员帐户在运行管理员模式的程序时是否可以看到提升提示,同时还决定了提升提示的工作方式。默认情况下,管理员在运行管理员模式的程序时会被要求批准,只要配置了该选项,那么管理员就必须输入自己的密码,就好像标准用户那样。你还可以通过配置这个选项让管理员看不到任何提示,这种情况下,管理员也将无法提升自己的特权。不过这样做并不能防止管理员用鼠标右键单击一个程序的快捷方式,然后选择以管理员身份运行。
用户帐户控制:用于内置Administrator帐户的管理员批准模式 决定了使用内置的本地Administrator帐户登录的用户和进程是否受限于管理员批准模式。默认情况下这个功能是启用的,这意味着内置的Administrator帐户也受限于管理员批准模式,并且还进一步受限于针对管理员帐户的提升提示行为设置。如果禁用该设置,使用内置Administrator帐户的用户和进程将无法受限于管理员批准模式,因此也不受限于针对管理员帐户的提升提示行为设置。 

 不同颜色的提升提示对话框
当我们运行一个程序的时候,如果需要使用管理员权限,那么UAC会显示提升提示对话框,然而根据程序性质的不同,对话框的样式也会有所不同。例如图11和图12就是两个不同的提升提示对话框,从图中可以看出,这两个对话框的主要区别在于程序的类型以及对话框的背景颜色。

图11显示的是我们试图打开计算机管理控制台时候的提升提示对话框。因为这是一个Windows自带的工具,因此带有微软的数字签名,同时被认为是可信的。这个对话框的背景(顶部的色块)是蓝色。

 

 图12是当我们试图以管理员身份运行一个第三方软件时看到的提升提示对话框,因为该程序没有包含有效的数字签名,因此Windows Vista将其显示为“未能识别的程序”,同时对话框顶部的色块是黄色的,而且带有一个盾牌图标。
根据发行者的不同,Windows Vista会将应用程序分为下列类别:

Windows Vista
发行者已验证(已签名)
发行者未验证(未签名)

接下来,为了帮助我们快速判断安装或运行应用程序可能导致的潜在危险,取决于应用程序所属类别的不同,权限提升的提示窗口会使用不同的颜色和特定信息进行区分:

如果应用程序来自被禁止的发行者或者被组策略所禁止,权限提升的提示窗口会显示红色的背景,并显示“应用程序被禁止运行”的字样。
如果应用程序是管理性质的(例如计算机管理控制台),权限提升的提示窗口会显示蓝色/绿色的背景,并显示“Windows需要您的许可才能继续”的字样。
如果应用程序带有数字签名,并且该签名被本机所信任,权限提升的提示窗口会显示灰色的背景,并显示“程序需要您的许可才能继续”的字样。
如果应用程序不带数字签名(或者带有签名,但不被信任),权限提升的提示窗口会显示黄色的背景和红色的盾牌图标,并显示“一个未能识别的程序要访问您的计算机”的字样。 

通过不同颜色的区别,再根据提升提示对话框上显示的详细信息,我们就能判断出要运行的程序到底是什么身份,并决定是否允许该程序以管理员身份运行。

强制以管理员身份运行
因为有了UAC功能,很多老程序可能无法在标准用户帐户下运行。这主要是因为程序可能为了实现特殊的功能而要访问系统底层的内容或设置,或者程序设计不合理,毫无根据地要求用户具有管理员权限。这类程序在Vista下运行可能会遇到问题。
兼容Windows Vista的应用程序的安装文件使用了一个包含运行级别信息的应用程序清单文件(Application manifest)帮助操作系统了解该程序所需的特权。应用程序清单文件通过下列方式定义应用程序需要的特权:

RunAsInvoker 使用和当前用户同样的特权运行应用程序,这样任何用户都可以运行该程序。对于标准用户或者隶属于管理员组的用户,该程序会使用标准访问令牌运行,只有在启动该程序的父进程(parent process)具有管理员访问令牌的时候,程序才会使用更高的特权运行。例如,如果你运行了一个提升后的命令提示符窗口,然后从该窗口下启动了一个程序,该程序才会以管理员访问令牌运行。
RunAsHighest 使用当前用户具有的最高特权运行应用程序,这样的程序可以被管理员用户和标准用户运行。可以被程序执行的任务取决于用户的特权,对于标准用户,程序会使用标准访问令牌运行;对于隶属于拥有更高权限用户组,例如backup operators组、server operators组或者account operators组的用户,程序会使用只包含用户当前具有的特权的访问令牌运行;对于隶属于管理员组的用户,程序会使用完整的管理员令牌运行。
RunAsAdmin 使用管理员特权运行应用程序,只有管理员才能运行该程序。对于标准用户或者隶属于拥有更高权限用户组的用户,只有在用户可以通过提升获取更高的权限以进行提升,或者程序通过提升后的父进程启动的情况下(例如通过提升后的命令提示符窗口运行该程序),该程序才可以运行;对于隶属于管理员组的用户,该程序会使用管理员访问令牌运行。 

因此如果一个程序带有清单文件,Windows Vista就能根据文件的信息判断出程序正常运行所需的权限,并对比用户具有的权限,判断是否需要提升权限。但如果程序不带清单文件,Windows Vista将以标准用户的身份启动程序,这是导致一些老程序无法正常使用的主要原因。
对于这类程序,解决起来也很简单,只要强制让该程序每次都使用管理员身份运行即可。只要在该程序的快捷方式上点击鼠标右键,选择属性,打开属性对话框的兼容性选项卡,接着选中“请以管理员身份运行该程序”选项即可。

实际上Windows Vista中和安全性有关的各种提示还有很多,不过陷于篇幅本文无法一一介绍。但在遇到其他本文未涉及的安全提示的时候,只要仔细查看说明,并配合Windows的帮助文件,就可以了解该提示的具体含义以及才怎样操作。希望通过合理使用这些安全功能,你的系统可以更加安全。

发表于 作者 Liu_hui | 3 评论

[Windows Vista]安全桌面凭什么那么安全?

写了三篇系列《Windows Vista如何以SYSTEM权限启动进程》小文章,借着这股劲,再来简单分析一下安全桌面。

安全桌面,大家应该不会感到陌生。UAC的权限提升提示对话框、用户网络凭据的保存对话框,还有欢迎登录界面,都是运行在安全桌面上。

究其本质,安全桌面,也叫做Winlogon桌面,实际上是WinSta0窗口站里默认具有的三个桌面之一。另外两个桌面,一个是Default桌面,也就是用户桌面,就是我们平时登录后所在的桌面,还有一个是屏保桌面(且不去管它)。

那么为什么安全桌面那么安全,以至于Windows把那么重要的任务都交给它?

难道是因为它的名字?当然不会!Windows并没有因为它的名字里有“安全”,就放心地把安全攸关的任务交给它(就这一点来说,很有点类似湖南卫视的武警战士,并没有因为某位超女的名头大,就随便放行)。

1. 一切还是得看安全权限设置

和窗口站一样,桌面也是一个安全对象,也需要通过安全描述符对其进行安全保护。

怎么才能查看Winlogon桌面的安全权限?

很简单,只需通过Process Explorer查看Winlogon进程的句柄表,里面会有一个\Winlogon的句柄,查看其安全属性。可以发现只有SYSTEM帐户才有所有可能的权限,而Administrators组帐户,只有有限的一些权限,如附图所示。

这就充分说明,在安全桌面上,只有以SYSTEM权限运行的进程,才可以读取安全桌面上的内容;其他进程呢,哪怕是以Administrators身份运行(够大了吧),还是不行。

所以UAC对话框运行在安全桌面上,真的是安全得很哪!只有SYSTEM运行的进程,才有可能读写UAC对话框的窗口。当然用户本身自然也可以,安全桌面本身也属于WinSta0,可以接受用户键鼠事件。

2. Mark Russinovich说过桌面才是安全边界

还记得盆盆翻译过一篇来自大牛Mark Russinovich的文章《Windows Vista用户帐户控制、PsExec和安全边界》吗?里面就曾经强调过,桌面才是Windows的安全边界,而UAC和IE保护模式都不是安全边界(充其量只是大大提升了安全级别,但并不是安全边界)。

如果理解桌面的ACL,就可以很好地理解桌面是安全边界这句话。

3. 其他桌面呢?

可以用Process Explorer查看其他桌面的安全权限设置情况,其中默认用户桌面\Default的安全权限和WinSta0窗口站完全一样。这没什么,默认用户桌面本来就是继承WinSta0的权限。

发表于 作者 ahpeng | 2 评论

[抢先揭密]Windows Vista为什么不允许两个用户同时登录(远程桌面)?

在写《Windows Vista如何以SYSTEM权限启动进程(3)》时,就在纳闷,为什么Windbg不能转储完整的WinSta0窗口站的安全描述符?为什么会少了登录SID和登录帐户的对应ACE?

盆盆很快发现,原来是我自己搞错了。为了方便,我用远程桌面连接到另外一台实验用Windows Vista机器,这时候由于是远程桌面登录的,拿到的是会话2。但是我在Windbg里检查的却是\Sessions\1\Windows\WindowStation\WinSta0。

也就是说,盆盆实际上是检查的会话1里的WinSta0窗口站,而不是远程桌面里的WinSta0窗口站(会话2)!!

难怪检查出来的结果,发现WinSta0窗口站里居然没有登录SID和Admin的对应ACE!!

1. 完整的WinSta0安全描述符

为了验证这个结果,盆盆重新做实验,这次直接控制台登录(会话1),再查看WinSta0的安全描述符,果然发现完整了,有附图为证!


图中棕色加粗的部分,就是登录会话SID和登录帐户Admin所拥有的ACE,这里可以看到登录会话SID拥有所有可能的权限,而Admin则几乎没有任何访问权限。

问题到这里并没有结束。

为什么会出现先前那篇文章里的错误?从中可以猜测到哪些结论?

2. 为什么只允许一个交互用户登录?

这里盆盆大胆假设Windows Vista(XP)为什么只能允许一个交互用户登录到系统(包括远程桌面)。原来是和WinSta0窗口站的权限有关!

当新的用户登录进来后,原来用户会话里的WinSta0的安全权限会发生变化,登录SID和登录帐户的ACE(访问控制项)会被删除。难怪我们看不到先前登录用户的桌面!

可以在远程桌面的环境里打开Process Explorer,查看一个在先前用户环境里打开的进程(例如Explorer),可以发现其句柄列表里没有WinSta0窗口站,如附图所示。

从图中可以看出,当前的用户桌面,会话2里的Explorer进程句柄表里包含WinSta0窗口站,所以可以和用户进行交互;而先前的登录用户,会话1里的Explorer进程句柄表里,没有WinSta0窗口站,所以虽然这些进程还在运行,但是无法和用户进行交互。

为什么先前的用户会话里的进程没有WinSta0的句柄,现在应该很明白了,因为该会话里的WinSta窗口站对象的ACL定义发生了变化,现在不再授予登录会话SID访问。

这一切看来和WinSta0窗口站的安全权限有关。可见,登录会话、窗口站的概念有多重要了。

知道了这个原因,从理论上,我们可以通过修改先前会话里的WinSta0窗口站的安全权限,来突破同一时刻只能允许一个用户交互登录的限制。但是实际上没有那么简单,盆盆能够想到的,微软肯定早就已经想到了。

网上貌似有通过替换一个文件(termsrv.dll)的方法,让Windows Vista支持多个用户交互登录。如果这个方法能够成功,其原理必然还是和WinSta0窗口站的权限有关。

发表于 作者 ahpeng | 2 评论

Windows Vista如何以SYSTEM权限启动进程(3)

查看WinSta0窗口站的安全权限

前面的内容隐藏了这样一个事实,为什么Local SYSTEM进程有能力加入到WinSta0窗口站?

大家可以回想一下,在Windows 2000/XP下,只有以Local SYSTEM运行的服务,可以选择“允许服务与桌面交互”。这实际上就是让该服务运行在WinSta0窗口站里,而不是运行在默认的Service-0X0-3e7$窗口站里。

但是为什么以其他帐户身份运行服务,不能选择这个选项?甚至连以当前登录帐户身份运行的服务都不行?例如当前以Admin用户帐户身份登录到系统,而系统中存在着一个服务,也以Admin身份运行。

这里我们可以查看一下WinSta0窗口站的安全权限。可以用Process Explorer,或者调试工具(例如Windbg)进行查看。

1. 用Windbg查看WinSta0的ACL

这里首先介绍用Windbg查看WinSta0窗口站的安全权限(更加完整)。

由于Windows Vista默认禁用Kernel Debug,所以必须运行以下命令手动打开Kernel Debug选项:

bcdedit -debug on

盆盆评注:注意,如果安装了Demon Tools之类的工具,请不要打开Kernel Debug的选项,以免产生冲突。

下图是利用Windbg所dump出来的WinSta0安全描述符的完整记录:
1

我们主要关心日志中最后三个棕色加粗显示的结果:Local System帐户拥有0x000f037f权限组合;Administrators组帐户拥有0x00020166权限组合;还有一个SACL的ACE为S-1-16-4096。

0x000f037f和0x00020166,看上去甚是古怪,但搞开发的兄弟应该很容易理解,这实际上是安全权限的组合掩码。

咱IT Pro不需要理解这到底是什么意义,只需要知道0x000f037f代表拥有WinSta0的所有可能权限;而0x00020166代表拥有大多数可能的权限,但是无法读取屏幕内容。

还有一个SACL的ACE为S-1-16-4096。这又是什么意思?

嘻嘻,这里就要请大家参考MVP小青蛙s兄弟的大作Windows Vista UIPI和窗口消息的故事》。原来在Windows Vista里,每个安全对象,包括窗口站,都有MIC等级的概念。这里可以看到WinSta0窗口站的MIC等级就是S-1-16-4096,实际上就是Low Integrity Level。当然在盆盆的多篇拙作里也曾经多次提及,例如《Windows Vista有趣的标签SID》。

WinSta0窗口站的MIC级别为什么会是低级?这可能是为了方便IE浏览器这样的Low MIC进程也能够读写WinSta0里的内容。

2. 用Process Explorer查看WinSta0的ACL

用Windbg查看WinSta0的ACL,可以得到比较丰富的信息,但是有一点小缺点,无法查看当前登录帐户的权限(相当于查看无用户登录时的WinSta0的安全权限)。

所以这里借助Process Explorer进行查看。

随便找到一个用户进程,查看其打开的句柄,可以发现其中有\Sessions\1\Windows\WindowStations\WinSta0这样的句柄,查看其安全权限。

可以看到当前登录帐户(本例是Admin)没有访问WinSta0的权限,如附图所示。
2

除了SYSTEM之外,还有一个古怪帐户S-1-5-5-0-148836具有所有可能的权限,如附图所示。
3
S-1-5-5-0-148836实际上就是Admin登录会话的SID。这样的结果非常有趣,WinSta0的权限是授予Admin的一次登录实例(登录会话),而不是Admin这个安全主体本身,很有意义。其实道理很简单,登录会话是经过LSA验证的一次登录实例,Windows可以信任。而以Admin身份运行的进程,并不一定都是由Admin这个用户触发的,还有可能是以Admin身份运行的服务,从WinSta0的ACL可以看出,这些服务无法访问WinSta0,尽管它们的身份就是登录用户本身!

Process Explorer虽然可以看到完整的安全描述符信息,也可以看到更详细的权限。但是有两个小缺点,一是无法显示WinSta0的MIC级别,而是只显示所谓的常规权限,而没有显示针对窗口站的特定权限。可能Mark Russinovich还没有来得及更新,抑或这位大牛认为这太简单了,认为大家很容易理解,不想再修改了。

盆盆评注:如何理解登录会话的SID?可以用服务和服务SID的关系进行类比。

3. 小结

罗罗嗦嗦说了那么多,结论呢?

实际上很简单,查看WinSta0窗口站发现,只有System和登录会话SID拥有所有的可能权限。所以这就可以解释,为什么在Windows里,只有运行在System权限下的服务才可以选择“允许服务与桌面交互”,因为实在是只有System才有权限访问WinSta0窗口站啊!

发表于 作者 ahpeng | 1 评论

Windows Vista如何以SYSTEM权限启动进程(2)

如何让用户能够看到SYSTEM下的进程?

在Windows 2000/XP下,这个不是什么问题。然而在Windows Vista下问题就来了。如果企图用AT命令启动某个Local SYSTEM进程,就会警告说不能和用户进行交互,哪怕加上/Interactive参数也不行!

原来在Windows Vista下,存在一个会话0隔离的问题。而AT命令所对应的Task Scheduler服务运行在会话0,而会话0是不能和用户进行交互的。

盆盆评注:这里要注意,会话登录会话,是两码事。具体的介绍,敬请期待后续的文章。

原来在会话0里,并没有WinSta0这个窗口站。天哪,又来了一个窗口站的概念,嗯,先不用管它,这里只需理解,窗口站用来保护进程的用户界面。只有WinSta0这个特殊的窗口站才可以接受用户的鼠标、键盘事件,才能和用户进行交互。

在Windows系统里,如果没有特别指定,SYSTEM登录会话里的进程,将会默认运行在Service-0X0-3E7$窗口站里,所以无法和用户进行交互。

所以很显然,要让以SYSTEM权限运行的进程,能够和用户进行交互,必须满足以下条件:

1. 必须不能运行在会话0下,例如可以运行在当前用户所在的会话下(例如会话1、2等)

2. 该SYSTEM进程必须运行在WinSta0窗口站。

对于开发人员来说,推荐参考Leo Jiang朋友的Blog文章,以便了解如何通过编程的方法,创建运行在WinSta0里的Local SYSTEM进程。

而对于IT Pro来说,我们可以借助Mark Russinovich所写的Psexec工具,让任意指定的进程运行在SYSTEM权限下。

而对于Windows Vista来说,其实有好些Local SYSTEM进程本身运行在WinSta0下(会话0),例如Winlogon进程、某个csrss进程,还有我们大家很熟悉的UAC提示对话框(consent进程),都运行在SYSTEM下,但是可以和用户进行交互。

发表于 作者 ahpeng | 2 评论

Windows Vista如何以SYSTEM权限启动进程(1)

很长时间没有写纯技术文章,有点对不住大家。盆盆这段时间可没有闲着,正在努力收集资料、做实验测试,准备写一些有关Windows安全底层技术的文章,陆续发表在ITECN博客,敬请大家期待。这里先上一篇比较有趣的。唯一遗憾的是,由于今天国家队不幸失败,影响了我写作的情绪,唉~~

可能有不少读者兄弟还记得盆盆以前写过一篇文章《超级另类法用SYSTEM帐户登录系统》,描写如何以SYSTEM权限启动Explorer进程。

另注:经热心读者举报,这篇文章曾被某无耻文抄公恶意抄袭。经盆盆核实后,赠书一本以感谢。

在Windows 2000/XP下,我们可以有很多方法,以SYSTEM身份启动某个特定的进程,盆盆就曾经写过一篇《以System帐户身份运行应用程序的三种办法》。

SYSTEM帐户启动的实质

其实不管用哪种方法,其本质都一样。都是利用SYSTEM登录会话里已有的某个进程A,帮助我们创建一个进程B,进程B会自然而然地运行在SYSTEM登录会话里-从而具有SYSTEM权限。

这里提到登录会话(Logon Session)的概念,这个概念比较抽象,甚至连MSDN里都有点语焉不详。这里我们且不去管它(将会在后续的文章里给大家细述这个抽象概念)。只需要了解:登录会话用来代表特定的安全主体,代表该安全主体的一次登录实例。

每个进程,都必须运行在特定的登录会话里。这里就有一个问题,在用户登录之前,Windows系统里已经运行了一些进程,这些进程显然也应该运行在登录会话里,这就是所谓的SYSTEM登录会话,它所代表的安全主体就是SYSTEM帐户。

在Windows的安全机制里,特定登录会话里的某个进程所启动的其他进程,也会运行在该登录会话里,从而继承安全上下文。

以System帐户身份运行应用程序的三种办法》这篇文章所描述的方法,都是运用这种原理。例如借助At命令以SYSTEM帐户身份启动进程,实际上是由Task Scheduler服务启动的,而Task Scheduler服务所在的进程svchost正是运行在SYSTEM登录会话,如附图所示。
2

图中所示的Task Scheduler服务的进程svchost所在的登录会话ID(Logon Session ID)是0x0-3e7,这就是代表SYSTEM登录会话。

用Psexec命令,道理也一样,实际上启动进程的是PsexecSvc服务,该服务的进程运行在SYSTEM登录会话。

发表于 作者 ahpeng | 4 评论

77无名英烈

这是一位在徐州会战中牺牲的中国战士((川军)。除此之外,我们便没有什么更多的有关他个人的信息,不知道他的名字,不知道他来自哪里。

从照片上,我们更无法辨认他的番号,但我们可以肯定,他是个年轻的士兵,有着一张川娃的脸。他阵亡了。身上用草绳扎着两件单薄的外衣御寒,脚上穿着一双草鞋。
1
 
男儿立志出夔关,不灭倭奴誓不还,尸骨何须桑梓地,人生处处有青山!

发表于 作者 ahpeng | 6 评论

System Repair Engineer 2.5.16.900正式发布了!

由大名鼎鼎的资深MVP小青蛙s同学研制开发,其特点是朴实、不张扬。容量极小,但是功能不俗。该工具支持Windows Vista,个人觉得比那些所谓的“大师”、“兔子”好多了,欢迎大家试用。如果有任何问题,欢迎在此反馈,或者直接联系小青蛙s。

System Repair Engineer 2.5 版本信息

版本号:

2.5.16.900

支持系统:

Windows 98SE

Windows ME

Windows 2000

Windows XP 32Bit

Windows Server 2003 32Bit

Windows Vista 32Bit

界面语言:

简体中文/英文/繁体中文 自适应切换

文件大小:

545 KB

发布日期:

2007-7-4

软件简介

System Repair Engineer,简称 SREng,是 KZTechs.COM 网站站长 Smallfrogs 开发的一款计算机安全辅助和系统维护辅助软件。主要用于发现、发掘潜在的系统故障和大多数由于计算机病毒造成的破坏,并提供一系列的修改建议和自动修复方法。

在 System Repair Engineer (SREng) 的帮助下,可以自己诊断操作系统里面可能存在的普遍性问题,即使是计算机的初学者,也可以使用 System Repair Engineer (SREng)  的智能扫描功能将系统的概况生成一份简要的日志,然后将该日志传送给对操作系统熟悉的朋友或网友,在他们的帮助下解决您系统可能存在的问题。

System Repair Engineer (SREng) 2.5 版本主要变化说明

在 System Repair Engineer (SREng) 2.5 版本里面,主要有以下变化:

多语言支持类别

1、 增加多语言外置资源DLL支持:通过外挂不同的资源DLL实现对多语言的支持,而无须重新编译System Repair Engineer (SREng)主程序模块。

2、 增加繁体语言界面的官方支持

API HOOK

相关类别

3、 增加使用内核驱动进行Win32 API HOOK的详细信息显示功能:能够智能显示被HOOK的API是由哪个内核驱动进行HOOK的。

4、 扩展API HOOK检测范围:在 System Repair Engineer (SREng) 2.5 版本里面,扩大了API HOOK检测范围。

5、 提高API HOOK检测精确性:在 System Repair Engineer (SREng) 2.5 版本里面,继续更新检测方法,提高了API HOOK的检测精确性和稳定性。

智能扫描相关

6、 增加使用可疑文件自动收集功能时的第3方组件调用功能:能够将SREng检测到的可疑文件信息传递给一个具有合法数字签名的外置的第3方组件,可以由第三方组件实现可疑文件的上传、可疑文件的确认等工作。

7、 增加进程特权指令扫描功能:增加进程非必要特权指令的扫描功能,使用本功能能够更好的检测出可疑文件。

8、 增加映像劫持检测功能:增加对Image File Execution Options 项的扫描和修复功能。

9、 增加智能扫描时的进程用户名显示功能

10、 提高智能扫描速度30%——300%根据不同系统、不同环境,智能扫描速度提升30%——300%。

11、 重写了智能扫描进度框的显示模式:新的显示模式能够显示当前正在扫描的项目内容。

12、 调整了智能扫描结果框的显示模式:新的显示模式增加了对窗口缩放功能的支持。

13、 放松对Installed Components等新的启动类型的扫描限制。

14、 注册表启动项可疑文件自动收集输出类别细化。

框架相关

15、 增加后台扫描支持:后台扫描模式下SREng将在后台自动执行智能扫描并生成扫描日志。系统管理员可以用自动扫描特性定期对系统进行扫描。后台扫描模式可以用 /escan 参数激活。

16、 调整泡泡窗口显示模式:对SREng里面的泡泡进行了修改,尽可能的降低由于泡泡带来的交互问题。

17、 增加 System Repair Engineer (SREng) 获取网站更新新信息的功能

18、 取消System Repair Engineer (SREng)最低过期时间检查。

19、 调整了System Repair Engineer (SREng)紧急更新模式的交互模式。

20、 增加Windows Vista详细版本信息显示功能。

插件部分

21、 增加NTFS流扫描插件。提供NTFS流威胁级别判定功能。

22、 提供NTFS流内容提取功能。

其他

23、 优化浏览文件功能的文件定位准确度。

24、 在系统修复——高级修复里面增加调用API HOOK扫描按钮。

25、 修正了System Repair Engineer (SREng) 2.4版本里面引入的特殊情况下进程模块显示不全的BUG。

26、 修正了服务扫描时由于字符串溢出导致的一个崩溃现象。

27、 优化了部分算法,提高了软件的运行速度和稳定性。

28、 其他一些改进。

System Repair Engineer (SREng) 2.5 版本常见问题解释

1) 如果API HOOK检测中无法定位是由那个模块进行HOOK的,则会显示具体的地址而不是模块路径。

2) 如果API HOOK修复功能无法修复目前情况,请按照提示操作,如果已经更新到最新版本,请等待后续版本的改进。

3) API HOOK修复功能只修正当前System Repair Engineer (SREng)进程,如果修复以后再起启动System Repair Engineer (SREng),还是会看到提示信息。

4) 可疑文件自动提取功能如果发现有一个文件同时符合多个提取选项,那么只有执行的第一个提取选项会被执行,后面的提取选项会自动跳过。此举是为了消除冗余文件和降低总的文件大小和数量。

5) 在 Win 9x/ME下,受制于操作系统本身的限制,在使用可疑文件复制功能时,会将一些系统文件也复制出来。

6) 如果选中了复制可疑文件到指定目录功能,则扫描速度会减慢10%用于文件的复制。此时扫描进度条可能会停止在90%的地方直到全部扫描结束。

7) 隐藏进程检查功能对同一个文件同时隐藏的两个进程实例,只会报告一次。

8) 某些反病毒软件的安全保护功能可能会对SREng的隐藏进程检查功能产生干扰导致SREng错误识别。

9) BOOT.INI、AUTOEXEC.BAT、CONFIG.SYS文件必须位于 C:\ 路径下面。

10) 对列表内容排序以后,原本可能存在的高亮颜色将丢失。

11) 服务枚举对话框在高速移动选中焦点时服务名会有重叠。

System Repair Engineer (SREng) 2.5 版本授权方式

System Repair Engineer (SREng) 2.5版本属于免费软件,在非用于商业用途的前提下允许自由传播。

System Repair Engineer (SREng) 2.5版本会在2008年7月1日到期,届时请自行下载新版本或联系软件作者索取授权号。

帮助文档

在线帮助文档和离线帮助文档均可以从 http://www.KZTechs.com/sreng/manual.html 访问到。

发表于 作者 ahpeng | 6 评论

十秒钟搞垮Windows Vista系统??

新浪网等多家媒体又爆料说Windows vista新致命漏洞,10秒之内系统或崩溃。方法是按住Win键+E,连续按住10秒钟,就会弹出无数个资源管理器窗口,10秒内系统就会崩溃。如附图所示(图片引用自tech.qq.com)。

但是果真如此吗?

还是得自己做实验才能得到验证。

盆盆发扬以身饲虎的精神,自己动手进行测试,按下Win键+E,长达30秒钟,结果确实打开N个资源管理器窗口,但是并没有出现蓝屏或者死机现象,系统只是暂时hang住了,很快就会报错说Explorer.exe进程Crash掉了,并且自动重启Explorer,问题得到解决。

由于我的内存是2GB,所以为了查看小内存情况下是否会出现同样问题,盆盆修改bcdedit,设置物理内存等于512MB,重启系统,做同样实验,发现结果还是一样。

看来网上以讹传讹的所谓技巧实在太多了,我们一定要自己动手做实验,我们只能相信自己的实验,而不要误信传言。

那么Explorer进程崩溃,算不算Windows Vista的Bug?

严格来说,不能算是Bug。因为Win键+E,定义为打开“资源管理器”的快捷方式,长按这个快捷方式,会导致打开无数多个资源管理器窗口。其结果导致Explorer进程崩溃,如果查看日志,会发现是shell32.dll模块出了故障。

实际上就算Explorer进程不 崩溃,Windows Vista还有最后一道防线,可以阻止某个进程过度消耗系统资源,如附图所示(附图摘自盆盆和刘晖的近作《Windows Vista使用详解》)。

 

发表于 作者 ahpeng | 8 评论
归档在:

再谈Windows Vista管理员密码的“破解”

在远景论坛看到一个帖子,很有意思。里面引用了一篇文章,很有点耸人听闻,说是“微软5年苦心全白瞎 3分钟破解Vista登录密码”,该文章的链接如下:

http://vista.zol.com.cn/56/568267.html

其大意是,用Windows Vista安装光盘引导系统,进入Windows恢复环境。打开命令提示符,运行MMC.exe启动控制台窗口,然后添加“本地用户和组”管理单元,即可重设管理员密码。

从表面上看,似乎没有什么问题,而且在Windows恢复环境下,我们是以SYSTEM帐户特权而运行,所以有权限进行任何操作。

然而问题在于,在Windows恢复环境下,加载的并不是本地的注册表配置单元,而是自己独有的一套注册表数据库。也就是说,根本没有加载本地的SAM帐户数据库文件,试问这时候“本地用户和组”怎么去修改帐户密码?难道有什么特殊的魔力去曲线救国??

如果真的那么简单,那么盆盆以前写过的一篇文章《Windows Vista拒绝罢工系列3─忘记管理员密码?没问题!》,就用不着那么麻烦,只需一个“Net User /add”命令不就可以解决了??这个命令等效于“本地用户和组”管理单元,都是对SAM数据库进行修改。

Windows恢复环境会模拟一个32MB大小的虚拟内存磁盘(盘符是X:\),所加载的注册表,也都位于这个虚拟内存磁盘中,根本不是本地硬盘里的内容。所以就算可以打开MMC管理单元,也无法修改,因为根本没有挂载C:\WINDOWS\SYSTEM32\CONFIG下的SAM数据库。

看那篇文章里的截图(如附图所示,本图引用自中关村在线),也能发现问题。看命令提示符窗口的标题栏和提示符,发现居然是“E:\××”,而真正的情况应该是“X:\”,X:是虚拟内存磁盘的盘符。

而且,如果尝试在Windows恢复环境的命令提示符窗口里运行“MMC”,会出现“没有注册类别”的错误。Windows恢复环境虽然有自己独立的注册表,但是毕竟没有模拟完整的Windows环境。

所以要重设管理员密码,不妨参考盆盆的文章《Windows Vista拒绝罢工系列3─忘记管理员密码?没问题!》

还有些朋友认为按照盆盆的文章,管理员密码貌似很容易重设,Windows Vista安全形同虚设。其实这是一种误解,这种方法必须要求能够物理访问计算机。任何安全都不能离开物理安全,如果连物理安全都不能保障,那么安全就是一句空话。

盆盆评注:注意是“重设”管理员密码,而不是“破解”。尽管这时候帐户的SID未变,但是会导致主密钥(Master Key)无法解密,所以诸如EFS加密文件、Windows Live Messenger、保存的网络帐户和密码等Secret无法解密。

SuperFetch,您受委屈了(二)

关键字 Windows Vista SuperFetch
作者    盆盆
难度    Level 300

上回说到要做一个实验,证明SuperFetch的效能。但实际上,要做出不受干扰的实验,非常难。所以本文设计了一个模拟的演示,来说明SuperFetch的作用。

在实验之前,先补充一下SuperFetch最基本的原理,以便初学者能够更好的理解:

物理内存的组成

在Windows里,我们可以简单地认为物理内存有以下五个部分组成:

  1. Working Set:工作集。这是每个进程所占据的物理内存部分。
  2. Standby List:当进程工作集收缩时,释放的page,如果没有修改过,或者修改的内容已经写入Page File或者硬盘文件中,这部分Page可以直接写入Standby List。
  3. Modified List:当进程工作集收缩时,释放的page,如果已经修改过,但是尚未写入Page File或者硬盘文件中,这部分Page叫做Dirty Page,直接写入Modified List。
  4. Free List:进程退出所释放的内存page,可能包含不确定的内容。
  5. Zero Page List:Free List里的Page可能存在不确定的内容,导致进程出错,所以需要定期进行清零。

系统会定时启动修改页写入线程,把Modified List里的Page写入硬盘的Page File或者其他文件里,然后把释放的Page插入Free List。

如果Free List超过8个Page,则自动触发清零线程,把Free List的Page内容清零,并插入Zero Page List。

当应用程序请求Page,但是这些Page不在进程的Working Set里,那么就会发生Page Fault事件。

如果这些Page位于Standby List或者Modified List里,则叫做Soft Page Fault事件,进程可以直接从Standby List或者Modified List里摘取Page,然后放入进程的Working Set里。

如果这些Page不在Standby List或者Modified List里,则叫做Hard Page Fault事件,只能从Page File或者硬盘文件里调取,这就要发生磁盘I/O,系统性能就会受到限制。

可用内存包括以上的三个部分:Standby List、Free List和Zero Page List。也就说,这些List里的Page,Windows可以直接分配给任何一个进程。

SuperFetch实际原理

可以归结为一句话,就是为可用内存的完美利用。只要内存的Free List和Zero Page List不为空,就会预加载常用进程的代码和数据,并把这部分Page插入Standby List。

这样的话,启动常用进程时,虽然会发生Page Fault,但是其中很多属于Soft Page Fault,直接从Standby List里摘取,所以不需要磁盘I/O。

Standby List的优先级

在Windows Vista里,不仅仅CPU有优先级,内存和磁盘I/O都有优先级。

在Windows Vista里,一共有八个Standby List,分别对应不同的内存优先级(0~7),进程默认优先级是5。

这样,如果内存不够,不得以要摘取Standby List里的Page,可以先从低优先级的Standby List中摘取,不会影响高优先级的进程。

可以用工具查看(绿色的是八个Standby List,红色的是Zero List和Free List):
1
实验-禁用SuperFetch,空闲内存越多,进程启动速度反而越慢

接下来的模拟演示,就是要证明,如果禁用SuperFetch,空闲内存越多,速度反而越慢。

实验条件:关闭一切可能干扰系统的后台进程,例如Windows Search、Windows Update,病毒扫描等等,还可以禁用Aero、UAC等。

实验机器:虚拟机,512MB内存,双核1.66MHz的CPU。

假设常用进程是Outlook 2007。

启动计算机,确保启用SuperFetch,等到系统完全预加载完毕,不再产生磁盘活动时,启动Outlook,多做几次实验,并记下平均启动时间T1,这里是6秒。并记下空闲内存M1,这里是11MB。

禁用SuperFetch,重新启动计算机,记住一定要重启,以便释放Standby List。等到系统登录结束,不再产生磁盘活动时,启动Outlook,多做几次实验,并记下平均启动时间T2,这里是17秒。并记下空闲内存,这里是212MB。

11MB和212MB,谁多谁少?

而6秒和17秒,谁多谁少?

而禁用SuperFetch后,虽然空闲内存增加了将近200MB,但是进程启动速度反而降低约2/3。

小考

光看文章,如果不过瘾,那么看看问题小考吧,这里盆.盆提以下几个简单问题,推荐初学者不妨思考一下,可以更好地理解SuperFetch和内存管理:

1. 为什么可用内存不包括Modified List?

2. 为什么说SuperFetch缓存不会减少可用内存?

3. 为什么SuperFetch反而会降低磁盘的损耗?

4. 请用Standby List的优先级,来说明Windows Vista是如何解决午餐综合症的问题。

何谓午餐综合症

在Windows 2000/XP中,如果打开WORD文档,当时性能不错,但是吃中饭后回来,再处理这个WORD文档,会发现速度很慢,这就叫做午餐综合症。

发表于 作者 ahpeng | 11 评论
归档在:

习惯用D版了,不习惯用正版,怎么办?

有时候,这并不能看作是一种托辞,确实有不少朋友认为“很多D版不知道比正版好用多少,你说说看我该用正版还是用D版”。

确实市面上一些D版软件做得很“人性化”,例如可以实现自动安装,自动打包近期的补丁等。

然而,这些所谓的人性化服务,其实微软早就已经提供了,例如微软定期推出更新补丁光盘,要实现自动化安装,完全可以用微软提供的工具进行自定义。

不过,这些都不是最重要的,关键是要认识到以下的事实:
如果想要购买正版,同时又觉得不如D版光盘好用,那么我们完全可以购买COEM版的Windows Vista,然后使用“修改版”的光盘,而用所购买的COEM序列号进行安装。

当然,前提条件是这些D版光盘并没有修改系统文件,不影响稳定性和安全性,没有挂病毒木马(同时满足这些条件比较难)。

为什么呢?原来正版软件,并不是体现在光盘介质上,而是体现在许可证上。哪怕是正版的光盘,但是没有合法的许可证,那也是盗版;而如果有合法的许可证,则完全可以使用任何的光盘介质,只要我们愿意。

参考盆盆所写的这篇文章,了解COEM版本的意义。

注意 本文所述,有关正版软件之确切信息,还请参考微软官方网站为准。

写在后面 本来是信口胡诌的,以博诸君茶余一哂耳,没想到有那么多朋友支持正版,有那么多朋友发表自己的真知灼见。兴之所至,赋梨花体诗一首,以谢诸君:

毫无疑问/
COEM版本的Vista/
是所有正版中/
最实惠的/

发表于 作者 ahpeng | 7 评论
更多内容 下一页 »