Windows还能删什么-ServicePackFiles or dllcache

19 views
Skip to first unread message

earlyfly

unread,
Apr 29, 2007, 3:43:10 AM4/29/07
to earlyfly
这两个文件夹一个位于:
C:\WINDOWS\ServicePackFiles\i386
一个位于:
C:\WINDOWS\system32\dllcache(具有隐藏系统属性)

其中的部分文件是重复的,主要是用于Windows的文件系统保护。

Windows有很多动态链接库(.dll )和可执行文件(.exe )等系统文件对于系统的稳定运行至关紧要,如果这些文件被删除和替换,就可能会
造成系统运行不稳定,实际上,很多病毒就经常篡改和伪装成系统文件或程序,而在安装软件时,覆盖一些共享系统文件是极为常见的。

为保护系统的可靠及稳定性,windows有一个"文件保护"的后台服务,默认情况下,该服务一直处于启用状态,监视着所有受保护的系统文件,如果发现
替换或移动受保护的系统文件企图,它能直接阻止,在文件被异常替换后,Windows会自动恢复这些文件。

ServicePackFiles 文件夹,对 Service Pack 文件提供保护,同时也提供对于一些系统组件的安装维护服务;而
dllcache主要对system32下的dll文件进行防护。

我最初玩Windows的时候,当删除了扫雷游戏后,发现转眼又回来了一个,再删除又回来,最后才发现了dllcache这个目录。

即然Windows对这些文件委以重任,在空间不太紧缺的今天,我们还是留下他们吧。

处理ServicePackFiles文件夹的一个可选方法是:移动。
转移位置后,可以通过修改注册表的键值来告知系统,注册表位置位于:
HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\Windows\CurrentVersion\Setup
\ServicePackSourcePath

earlyfly

unread,
Apr 29, 2007, 3:45:12 AM4/29/07
to earlyfly
Windows文件保护:最终将"DLL陷阱"全面冻结
终于可以永远摆脱"DLL陷阱"了。Windows 2000专业版操作系统有一个新特性:Windows文件保护。它可以帮助被动态连接库和可执行文
件困扰的应用程序解决它们面临的问题。Windows文件保护特性可以让你避免操作系统和应用程序之间令人不悦的不匹配问题。如果某个应用程序没有代码
签名(代码签名是一种数字签名加密技术,它核实系统文件的来源),那么Windows文件保护将不会让它通过。这样就而减少了很多麻烦,以及因此而产生
问题后带来的不快。

Windows文件保护如何工作?

通过两种机制,Windows文件保护特性可以检测并纠正应用程序安装过程中某些文件被未被授权文件替换的情况。第一种机制是,在某个重要系统文件被修
改时,Windows文件保护会得到通知。然后Windows文件保护找到目标文件以及这个文件是否是被保护的。如果目标文件确实是被保护的,那么
Windows文件保护将在一个编目文件里检查文件的签名。如果签名是假的,那么这个文件将被Dllcache文件夹里的对应文件替换,或被新应用程序
的安装程序用新的文件替换。

另一个机制是系统文件检查器 (Sfc.exe) 工具。在图形用户界面安装的最后阶段,系统文件检查器工具会扫描所有被保护的文件,为安装程序修改文
件做好准备。它还检查所有用来跟踪正确文件版本的编目文件。如果发生丢失或损坏的情况,Windows文件保护将对受影响的编目文件重新命名,并从
DLLcache文件夹下恢复这个文件的缓存版本。如果不能获得这个文件的缓存版本,Windows文件保护将会要求插入适当的磁盘或光盘来获得编目文
件的一个新的拷贝。

你还可以用系统文件检查器做什么

扫描所有被保护的文件,以验证它们的版本。
检查和重新填充%Systemroot%\System32\Dllcache文件夹。
修复被损坏或无法再使用的Dllcache文件夹内容。
设置文件缓存大小(分配给Dllcache文件夹的空间)。
有关Dllcache的细节

为所有类型的文件都保存一个缓存版本的需要可能会和磁盘空间方面的考虑发生冲突。但是,如果你决定为所有类型的文件都保存一个缓存版本的话,那么请在注
册表里把SFCQuota的值设置为0xFFFFFFFF,这样就可以缓存所有被保护的系统文件(大约2700个文件)。然而更好的情况是,如果你安装
了Windows 2000并且有足够的磁盘空间,那么Windows 2000将会自动缓存所有被保护的系统文件。

Windows文件保护对Dllcache文件的操作:

如果Windows文件保护检测到一个侵入文件,而受影响的文件不是Dllcache文件,并且被操作系统使用的相关文件的版本为正确版本,则
Windows文件保护将这个版本拷贝到Dllcache文件夹。
如果正在被操作系统使用的受影响文件的版本不是正确版本,或者文件没有缓存到Dllcache文件夹,那么Windows文件保护特性会试图找到这个文
件的安装路径。如果介质没有找到,则Windows文件保护会显示一个对话框,让你插入适当的介质,以替换文件或者Dllcache文件版本。

earlyfly

unread,
Apr 29, 2007, 3:46:55 AM4/29/07
to earlyfly
减肥新法----处理dllcache
windows文件保护:

打开我的电脑,进入windows\system32\看看,里面有很多诸如动态链接库(.dll )和可执行文件(.exe )等系统文件(也有
许多是属于你装的软件的),这些文件关乎系统的稳定运作,却在暴露在光天化日之下,如果被删除和被替换,就可能会造成系统运行不稳定。事实上,装软件的
时候,特别是一些版本老的软件的时候,覆盖一些共享系统文件的事是常有的。

针对这一点,windows就有一个"文件保护"的后台服务。默认情况下,该服务一直处于启用状态,监视着所有受保护的系统文件,如果发现替换或移
动受保护的系统文件企图,它能直接阻止。当然windows并不阻止所有这样的企图,它允许有Windows 数字签名文件替换现有文件,这样你的系统
才可以更新和升级。

"系统文件检测"程序

"系统文件检测"程序是一个在命令提示符下使用的实用程序,命令是"sfc",只有是管理员才能使用该程序,那些"大虾"们教的删除
dllcache的命令"sfc/purgecache"就是用了这个程序,这个程序的作用就是检测系统文件,如果检测到受保护的文件已经被不正确的文
件覆盖,它就从系统文件备份(就是dllcache)中提取正确的系统文件,替换不正确的文件。

这个程序也检测dllcache本身,如果发现dllcache已经损坏或者不能使用,可以用修复它,所谓修复,就是要你插入安装盘,它自动从中提
取所需的文件。命令是"sfc /scannow",具体各位可以查看帮助。

dllcache:

dllcache的位置在"\windows\system32\dllcache",有350M以上,是个系统隐藏文件,这么大的体积是想减肥的
xp用户盯上它的原因。

大家搜索一下windows文件夹下的某类系统文件(先取消系统文件的隐藏属性喔!),会发现有很多文件是重复的,许多文件会在
system32(除dllcache)和dllcache里各有一个。所以dllcache可以看作是个备份。它的体积不是固定的,当你装一些微软系
的软件,或做升级,打补丁时,安装程序会在dllcache中放一些重要文件的副本--这样他的体积就增加了。

dllcache作为备份是在使用"系统文件检测"时发挥作用的,介绍"系统文件检测"时已经做了说明。


其实dllcache里面"备份"的系统文件要比你使用的多,也就是说它准备的东西有些你还没用到,在你用到的时候,它结合"windows文件保
护"就能发挥作用。比如你装了一些软件(主要是微软系),这个软件会在windows里的有关文件夹里放入已经被设定为被"windows文件保护"监
视的重要文件,但要比dllcache里的旧,这时"windows文件保护"就会从dllcache里读取最新的版本替换旧的文件。

所以dllcache不只是一个简单的"备份",它实际上"准备"了你可能会用到的所有重要系统文件,是一个备用的系统文件库。

从"删不删?"到"万全之策"

很多人问我这个问题的时候,我都说"不",dllcache是不应该删的。

dllcache是系统隐藏文件,微软这么小心奕奕地把它藏起来总是有它的道理的。引起"删不删"的疑问是因为它体积大而用的少,不象shell,
无处不用。

但删除它是危险的:

1,容易让旧版本的文件贮存系统文件夹,造成系统不稳定。

2,使"系统文件检测"程序失效,一旦使用就会提示你从安装盘把dllcache"取"回来,如果取回来,那你不就白删了?

3,升级,打补丁的时候,原来设定要放到dllcache里的备份没处放,可能会造成升级中止,或重建一个名为dllcache的文件夹来放备份。
(我没删,所以我不敢确定是什么后果)。

4,当你装一些软件,或加一些硬件时,他们可能设定要从dllcache重提取一些文件出来使用,没有dllcache会造成硬件无法使用或软件无
法安装。

可见,删dllcache短期内也许没关系,但长期看,你会碰到问题却不知道问题出在哪里--而这很可能是因为没有dllcache造成的。所以我
强烈建议不要删。

那么那些系统盘实在太小的朋友该怎么办呢?经过研究,我找到了方法,就是把dllcache"转移"到别的盘,就象转移虚拟内存。下面容我讲来这
个"完全之策"地步骤:

1,开始->运行,键入"gpedit"->启动"group policy"。

2,在"group policy"找到:本地计算机策略->计算机管理->管理模块->system ->windows File
protection

3,单击"windows File protection",你在右面看到一个叫"Specify Windows
File Protection cache locatin"的项。这个项是设置dllcache的位置的,下面 你就知道怎么做了,我就不多说了,
自己动手搞定它吧

Reply all
Reply to author
Forward
0 new messages