论文部分内容阅读
“救命啊,有怪兽!”阿呆大叫,他刚装了Vista系统,就发现了一个神秘的目录:WinSxS,它的体积庞大,达到了15GB;文件繁多,多到了数不胜数。笔者系统下该目录大小也高达8.85GB(见图1)。它有什么作用?为什么体积会如此巨大?可以对它进行瘦身吗?今天就一起揭开这头怪兽的神秘之身。
WHY?体积太大,源于认真
了解了WinSxS的作用,其实就很容易了解它为什么会不断“变肥”的原因了。因为每次系统更新都会在其中添加新版本的文件。比如,对于Vista系统来说,就有6.0.6000、6.0.6001(SP1)、6.0.6002.*(SP2)等版本。打开C:\windows\winsxs目录,在其下就会发现很多类似“msil_accessibil……d92a52217”的目录(见图2)。
小提示:
这一长串文件名中的“_accessibility”就是表示DLL文件名称(打开该文件夹后可以看到Accessibility.dll文件以及版本号),4dd6596d92a52217是补丁编号,6.0.6000.16386则表示不同Windows版本号,里面保存的是同一名称的DLL文件(只不过版本号不同而已)。
WHO?前世秘书,今生备案
WinSxS其实并不是安装了Vista后才有的新鲜事物,早在XP时代就藏身于系统目录下。根据微软官方解释,WinSxS(Windows Side-by-Side)是系统用于存储各个版本的组件,减少因为动态链接库(Dynamic Link Libraries,DLL)引起的配置问题(DLL hell),组件的多个版本都存储在这个文件夹中,它就相当于一位辛勤认真的秘书,充分履行自己的组件备案工作。此外,这也是Vista组件化的技术基础。除了那些组件,这里还存放一个或多个二进制文件,一个索引文件,还有一个描述安装过程如何进行的XML格式文档。这样每当系统需要任何一种文件的时候,都会从这个文件夹找到相应的文件。
为什么要存储各个版本的组件呢?这主要是由于系统补丁的不断升级造成的。正常情况下,微软一般一个月就要发布一次补丁升级告示,每次升级都会更新大量的组件。而对于许多应用程序来说,它们的更新速度显然跟不上微软的脚步。如果系统更新时不把旧版本组件进行保留,而一些应用程序在运行时只能调用旧版本DLL,这就会产生DLL配置问题,甚至导致应用程序无法运行。因此,为了提高系统兼容性(也为了便于回滚到旧版本),微软推出了这位秘书兼备案工作者,用于存放各个版本的组件(如SP1、SP2、SP3等版本)。
HOW?过于占地,如何减肥
这个目录是在系统分区,给系统备份和恢复带来诸多不便。试想一想,系统备份如果多加15GB数据,显然会增加不少备份时间。因此,需要对它进行减肥,以便减少备份和恢复时间。
由于系统对系统目录采用的严格的权限保护,删除前一定要取得目录的完全读取权限。删除的原则是保留最新版本的数据,删除旧版本的同名数据即可。比如上述例子中,删除前一个文件即可。注意的是,WinSxS中存贮的都是重要系统文件,删除时必须认真查看文件名,只有存在冗余的才能删。
实际上,系统中很多目录都会随着更新不断变大,为此文中最后列举一些常见系统目录以及该目录的作用,方便大家有选择地进行减肥(见表)。
WHY?体积太大,源于认真
了解了WinSxS的作用,其实就很容易了解它为什么会不断“变肥”的原因了。因为每次系统更新都会在其中添加新版本的文件。比如,对于Vista系统来说,就有6.0.6000、6.0.6001(SP1)、6.0.6002.*(SP2)等版本。打开C:\windows\winsxs目录,在其下就会发现很多类似“msil_accessibil……d92a52217”的目录(见图2)。
小提示:
这一长串文件名中的“_accessibility”就是表示DLL文件名称(打开该文件夹后可以看到Accessibility.dll文件以及版本号),4dd6596d92a52217是补丁编号,6.0.6000.16386则表示不同Windows版本号,里面保存的是同一名称的DLL文件(只不过版本号不同而已)。
WHO?前世秘书,今生备案
WinSxS其实并不是安装了Vista后才有的新鲜事物,早在XP时代就藏身于系统目录下。根据微软官方解释,WinSxS(Windows Side-by-Side)是系统用于存储各个版本的组件,减少因为动态链接库(Dynamic Link Libraries,DLL)引起的配置问题(DLL hell),组件的多个版本都存储在这个文件夹中,它就相当于一位辛勤认真的秘书,充分履行自己的组件备案工作。此外,这也是Vista组件化的技术基础。除了那些组件,这里还存放一个或多个二进制文件,一个索引文件,还有一个描述安装过程如何进行的XML格式文档。这样每当系统需要任何一种文件的时候,都会从这个文件夹找到相应的文件。
为什么要存储各个版本的组件呢?这主要是由于系统补丁的不断升级造成的。正常情况下,微软一般一个月就要发布一次补丁升级告示,每次升级都会更新大量的组件。而对于许多应用程序来说,它们的更新速度显然跟不上微软的脚步。如果系统更新时不把旧版本组件进行保留,而一些应用程序在运行时只能调用旧版本DLL,这就会产生DLL配置问题,甚至导致应用程序无法运行。因此,为了提高系统兼容性(也为了便于回滚到旧版本),微软推出了这位秘书兼备案工作者,用于存放各个版本的组件(如SP1、SP2、SP3等版本)。
HOW?过于占地,如何减肥
这个目录是在系统分区,给系统备份和恢复带来诸多不便。试想一想,系统备份如果多加15GB数据,显然会增加不少备份时间。因此,需要对它进行减肥,以便减少备份和恢复时间。
由于系统对系统目录采用的严格的权限保护,删除前一定要取得目录的完全读取权限。删除的原则是保留最新版本的数据,删除旧版本的同名数据即可。比如上述例子中,删除前一个文件即可。注意的是,WinSxS中存贮的都是重要系统文件,删除时必须认真查看文件名,只有存在冗余的才能删。
实际上,系统中很多目录都会随着更新不断变大,为此文中最后列举一些常见系统目录以及该目录的作用,方便大家有选择地进行减肥(见表)。