当你安装一个应用程序却不料引起Windows崩溃的时候,很有可能是因为应用程序改写了关键的Windows系统文件,导致系统崩溃。在文件被修改后,结果往往不可预知。
SFCQuota SFCQuota注册表键用来控制SFC文件缓存的大小。或许你会记得,之前在我谈到SFC /CACHESIZE=x 命令时,我提到关于文件缓存的默认大小,存在许多不一致的信息。然而在我的系统上,注册表键SFCQuota的DWORD值默认为0xffffffff。根据微软知识库,这个值对应文件缓存的大小为300 MB。同一篇知识库的文章指出通过修改这个值为FFFFFFFF,你可以缓冲存储所有受保护的系统文件。
SFCDllCacheDir 在这之前,我解释说Windows将DLLCACHE文件夹作为存储系统文件备份的地方。通常的,这个文件夹位于WINDOWSSYSTEM32目录下。不过通过修改SFCDllCacheDir注册表键,你可以修改文件缓存的位置。
文件缓存文件夹一般位于DLLCACHE目录下,但通过修改这个注册表键,你可以修改这个文件夹的位置。唯一需要注意的一点是你必须指定一个已经存在于本地硬盘驱动器上的地址。在Windows 2000里,你可以指定一个网络共享作为DLLCACHE的路径,但在Windows XP中没有这个选项。
SFCShowProgress 另一个与SFC相关的注册表键是SFCShowProgress键。这个注册表键允许你设置它的DWORD值为0,或1。缺省值是0,它将禁止显示SFC的进程情况。设值为1就可以让SFC显示进展情况。
源文件地址 在这之前,我解释了WFP和SFC是如何工作的,我指出在某些条件下你可能必须提供Windows安装CD或者有效源文件的拷贝。然而通过修改注册表,向Windows指明一个源文件目录是完全可能的,而无需Windows再向你询问这些文件。
这个注册表键在注册表的另一部分。你必须找到下面这个键:
HKEY_LOCAL_MACHINESoftwareMicrosoftWindowsCurrentVersionSetup
一旦你找到了这个位置,通过使用一个驱动器符号或者路径或者一个UNC,你可以指定Windows系统文件的位置。
使用这个命令的前提是你必须将文件放在名为I386的目录中。例如,如果你的Windows系统文件位于一个名为C:I386的目录中,那么你只需在注册表中指定路径为C:,因为Windows假定I386这个目录是存在的。同样的,如果你打算使用一个UNC共享,I386文件夹必须存在于共享目录下。例如,如果你打算共享的目录名为FILES,你需要将I386文件夹放在FILES目录下。然后你可以告诉Windows在\ server_nameFILES目录下寻找共享文件。Windows将在
\server_nameFILESI386目录中寻找系统文件。