sevencheng 发表于 2009-5-4 13:21

再论winsxs的清理问题!

本帖最后由 sevencheng 于 2009-5-4 13:27 编辑

在本文之前首先明确几点:
1.各取所需,对于系统瘦身没有兴趣或对硬盘空间不敏感的网友大可不在意这篇文章,我不希望出现人身攻击的情况!
2.本操作与以前的任何清理攻略不同,存在危险性,因此我建议有多系统或者有PE的网友才使用本方法(方便还原),删除文件后不要将文件放在回收站(PE和XP可能找不到vista的回收站),应建立一个文件夹存放,确定系统启动和使用没有问题后再删除。
3.本攻略需要修改winsxs的权限,具体方法不赘述
4.多系统者尽量在Vista下操作,万一删到系统正在用的文件这时是删不掉的。
5.使用本方法后,不能卸载更新!
Vista/Win2008内具有超大WinSxS文件夹,这是我们每个人在安装Windows Vista和Windows Server 2008时候都会遇到,而且好多人询问WinSxS文件夹可不可以被清理或删除。为了解答这个问题,首先我们要了解“组件化”这个词的含义,然后再谈一谈Vista里面的组件们是如何被管理的。
Vista相比于前任的重大变化之一就是从用“安装配置”(INF文件)描述的操作系统过渡到组件化的系统.Windows中的所谓“组件”就是一或多个二进制文件,一个索引文件,还有一个描述安装过程如何进行的XML格式文档.这个文档描述了可能的注册表操作或者安全权限需求.组件们以逻辑单元分组,这些单元的不同就是Windows不同版本的区别。
  WinSxS这个文件夹存放了Windows所需要的所有组件。每一个组件都有属于自己的命名,可以看出它属于何种版本、语言,以及是32位还是64位的Windows。每当系统需要任何一种文件的时候,都会从这个文件夹找到相应的文件,再拷贝到需要的路径里面,或者直接创建一个映射,指向winsxs文件夹里的源文件(显然这么做对硬盘空间仁慈多了)。也就是说,实际上Winsxs这个文件夹和Windows完全安装一次所需的磁盘空间一样大。
  这样一来,我们便不能完全从硬盘上删除某种Windows功能,就像我们刚刚在xp里还能做到的那样。(你也许注意到了,控制面板“程序和功能”里有一个“打开或关闭Windows功能”选项——而不是“添加或删除Windows功能”。)
  也是因为如此,理论上winsxs这个文件夹并不会随着时间推移越来越臃肿,塞进一些天知道是什么的东西(很不幸,很多Windows文件夹都有自动增肥的功能)。但有一个例外——就是如果你安装了一项功能的更新(例如通过WindowsUpdate),那么为了方便你回滚有问题的更新,新旧两种文件副本会同时存放在Winsxs文件夹里!(看来要双手合十祈祷微软能一次性更新尽可能多的补丁,而不是一次一个,一次一个……)
  微软这么做显然能大大提高产品的稳定性。因为每个更新版本都有副本保存,所以当我们回滚一个更新时,会退回到次新的版本,不会出现版本号混乱的局面。而且,如果要添加一个新功能,系统会检查是否已经有了版本号更新的组件,而不是直接插入光盘,因为那样只会装上RTM的旧版本。
  最后,安全的削减Winsxs文件夹的大小,只有一个办法,就是尽可能去掉自己不用的组件及其更新。SP1中的一个小程序VSP1CLN.EXE可以永久整合SP1到系统,删除一切用于回滚的版本备份,这样便不能回退到RTM。
  (在现在硬盘容量向TB迈进的时候,牺牲一部分硬盘空间来换取比以往更高的安全性,也许是比较划算的办法。从这点看来Vista的确是面向未来而设计的一款系统。)
明白了上述原理,我们就知道Vista最大的冗余其实就是在Winsxs文件夹,这个文件夹将所有以前版本的vista文件都做了保留,因此你在vista中搜索一个系统文件名会得到多至几十个结果!这就是Vista中垃圾的最大来源,vsp1cln工具清理的就是这种东西,但是并不彻底。(即使不彻底也能清理掉800M……)


经过我的研究和实际试验,我终于找到一种清理winsxs的方法,不会影响系统的任何功能和稳定性,后果仅仅是不能卸载更新而已(有人会卸载么……?)


其实我清理winsxs的原理很简单,那就是删除冗余,大家先看看这个图片

看到没有,同样内容的文件夹因为版本不同分成了多个备份!有6.0.6000.****(原版)和6.0.6002.****(SP2)


蓝色标记为文件名,红色为版本号。首先看文件名,然后再核对版本号

我的清理攻略其实就一句话——找到这种同内容多版本的文件夹。若既有原版又有SP2或SP1的,那么将所有6.0.6000.****(原版)删除,保留最高版本的6.0.6002.****(SP2);若只有原版,你看小版本号有没有不一样,保留最新的即可。


必须认真查看文件名,只有存在冗余的才能删。

独舞音符 发表于 2009-5-4 13:36

有意义吗? 分100GB给C盘就行了

zqjiang 发表于 2009-5-4 13:37

需要手动删除的吗?

hongjinlong 发表于 2009-5-4 15:35

楼主辛苦了 如果能做成批处理,那就完美了手动好累啊

sun's 发表于 2009-5-4 16:07

几千个呀,手动太~~~~~

chenleiyi 发表于 2009-5-4 16:11

别把生命浪费在这些无意义的细节上

John.Sha 发表于 2009-5-4 16:45

2楼的朋友真是站着说话不腰疼,如果你家买了超过200平米的房子是不是从此就往外面扔垃圾了呢?!楼主已经指出“对硬盘空间不敏感的可以跳过”。Vista系统的臃肿是毋庸置疑的,对于硬盘空间有限的用户清理和优化势在必行,不过这个winsxs文件夹的清理我个人还是有所保留的,毕竟这是一个很敏感的文件夹,我还是建议大家最好把系统自带的不用的驱动程序清理一下,比如象调制解调器的驱动就很庞杂。就我个人的本本总共60G的空间,给C盘分了25.8G,安装家庭高级版更新至SP1,NOD32和office 2007 SP2(最常用的三大组件)也安装在了C盘,现在还有10.2G的剩余,所以能不去动winsxs最好不要去动它。

AresVista 发表于 2009-5-4 17:32

一般更新装了就不会卸掉了,所以最好有一个自动清理程序来完成,但是怕清掉了又会有一些问题出现。我做SP2镜像的时候就是因为winsxs太大了,所以压缩后依然塞不进DVD光盘,郁闷死我。

lxnmail 发表于 2009-5-4 17:45

我也是 升了sp2 就太庞大了 没做精简 压不倒dvd里

morninger 发表于 2009-5-4 18:44

反正下载在使用一切正常的情况下,不会驱动的,现在C盘还有5~6G!

skyocean 发表于 2009-5-7 13:58

这么多啊,手动一个一个删,不要晕死吗。有没有方便一点的方法啊。

jummmm 发表于 2009-5-7 14:37

liuzhongfa 发表于 2010-1-24 11:31

太多了,有个批处理就好了!

zall10 发表于 2010-1-24 11:51

有个批处理就好~

xwj0100 发表于 2010-1-25 11:33

感谢分享!

ezhoucj 发表于 2010-4-24 00:07

回复 1# sevencheng


    怎么能卸载啊?

craze_zd 发表于 2010-4-28 16:39

支持, 系统的精简和优化是必要的,lz不必在意那些觉得有大硬盘就一切ok的小白的话。
页: [1]
查看完整版本: 再论winsxs的清理问题!