hello,小铁来为大家解答以上问题,正常运行windows所需的文件已被替换成,正常运行windows所需的文件已被替换很多人还不知道,现在让我们一起来看看吧!
一位XP系统用户反映,他按了F11恢复系统,但当他启动机器时,他被提示“正常运行Windows所需的文件已被无法识别的版本替换。为了保持系统稳定,Windows必须还原这些文件的原始版本。现在插入您的Windows XP Professional光盘。我该怎么办?下面是解决这个问题的方法。
解决方法:
1.插入系统安装光盘,并运行sfc /scannow命令来检测和修复可能损坏和更改的系统文件。
2.在“开始运行”对话框中键入“gpedit.msc”,打开“本地计算机策略计算机配置管理模板系统”窗口,找到“Windows文件保护”。双击右窗格中的“设置Windows文件保护扫描”项目,并将其更改为“禁用”。
3.打开注册表编辑器,在[HKEY _本地_机器\软件\微软\ Windows NT \当前版本\ winlogon]的右窗口中找到“SFCDisable”注册表项,将其更改为“ffffff9d”。如果需要重新启用该功能,只需将其重置为“0”即可。
4.第一,如果被替换的文件不是关键的系统文件(即系统文件被替换后仍然不影响系统的运行),
而且你不喜欢它的提示对话框,那么你可以关闭它的提示。
关闭方法:
【点击开始菜单】【运行】【输入命令:cmd】【然后在弹出窗口直接输入命令:sfc /cancel】呵呵,这样提示应该没了。
还有另一种方法:
当它在弹出窗口中时,您插入系统安装盘,然后根据提示修复被替换的文件。当您安装了一个应用程序,但意外地导致Windows崩溃,这可能是因为该应用程序重写了关键的Windows系统文件,导致系统崩溃。文档被修改后,结果往往是不可预知的。系统可能正常运行,或者出现一些错误,或者完全崩溃。幸运的是,Windows 2000、XP和Server 2003应用了一种称为Windows文件保护(WFP)的机制,可以防止关键的系统文件被覆盖。在这篇文章中,我将解释什么是WFP以及它是如何工作的。我还会告诉你如何改变或忽略WFP的行为。
温馨提示:尽管WFP在Windows 2000、XP和Server 2003上的操作没有区别,但本文中的信息(包括与注册表相关的条目和SFC语法)是针对XP的。
Windows文件保护是如何工作的?
WFP旨在保护Windows文件夹的内容。WFP保护特定的文件类型,如SYS,EXE,DLL,OCX,FON和TTF,而不是防止整个文件夹的任何修改。注册表项决定了WFP保护的文件类型。
当应用程序试图替换受保护的文件时,WFP会检查被替换文件的数字签名,以确定该文件是否来自微软以及版本是否正确。如果两个条件都满足,则允许更换。正常情况下,允许替换系统文件的文件类型包括Windows的服务包、补丁和操作系统升级。系统文件也可以由Windows updater或Windows设备管理器/类安装程序替换。
如果这两个条件不同时满足,受保护的文件将被新文件替换,但很快就会被正确的文件替换。
发生这种情况时,Windows将从您计算机上的Windows安装CD或DLLCache文件夹中复制该文件的正确版本。
Windows文件保护不仅通过拒绝修改文件来保护文件,还可以拒绝删除文件。让我们来看看WFP的做法。打开WINDOWSSYSTEM32文件夹,将CALC.EXE文件重命名为CALC。旧当您执行此操作时,会有一条消息提示您更改此文件的扩展名可能会导致此文件不可用。单击“是”按钮确认该警告。现在,等待几分钟,然后按F5刷新文件系统的视图。完成替换可能需要一些时间。当文件最终被替换时,Windows会在事件日志中做相应的记录。
关于WFP,值得注意的一点是,它与Windows installer紧密集成。每当Windows installer需要安装一个受保护的文件,它会给WFP,而不是试图安装自己。然后WFP判断是否允许安装。
系统文件检查
虽然自动文件替换会节省时间,但有些情况需要手动干预。例如,您可能不想等待WFP来判断受保护的文件是否已被替换。幸运的是,您可以使用名为系统文件检查(SFC)的工具手动控制WFP。
SFC是一个命令行工具,需要在命令提示符窗口中运行。它的语法是这样的:sfc[/scannow][/scanonce][/scanboot][/revert][/purg
/SCANONCE参数通知WFP在系统下次启动的时候扫描受保护的系统文件。在扫描过程中,任何错误的文件将被正确的版本替换。正如这个参数名的意思,这个扫描只进行一次。之后的系统启动将恢复正常,SFC不再运行。
/SCANBOOT参数和/SCANONCE选项类似。区别在于SCANONCE只在Windows下次启动时扫描受保护的文件,而SCANBOOT 参数则在Windows每次启动时都扫描系统文件。如果需要,这两个参数将替换错误的系统文件,这可能需要你提供正确文件版本的拷贝。
/REVERT选项用来关闭SFC,例如,假设你使用SCANBOOT选项在每次系统启动的时候扫描所以保护的文件。正如你所能想到的,这确实会增加计算机启动的总时间。最后,你可能厌倦了漫长的启动时间,想关闭SFC。只需要简单的使用SFC /REVERT,就可以在启动的时候关闭SFC。
对/PURGECACHE选项就需要谨慎些。在这之前,我解释说Windows使用一个缓存文件夹来保存各类系统文件正确版本的备份。如果你运行 SFC /PURGECACHE命令,那么这个文件缓存将被清空,那些备份文件将被删除。这个命令还会导致Windows开始扫描各类受保护文件,并在扫描的同时重建这个文件缓存。当然,这可能意味着你必须向Windows提供Windows安装CD或系统文件升级的拷贝。
最后一个SFC命令选项是/CACHESIZE=x。对于文件缓存的缺省大小确实存在很多自相矛盾的信息,在写这篇文章的时候,我发现三篇不同的微软知识库文章中指定的文件缓存的缺省大小都不一样。一篇文章中建议文件缓存的大小为50 MB,而另一篇建议的大小却是300 MB。更有甚者,第三篇指出这个大小应该是无限的。其实缺省值的大小并不重要,因为你可以根据你的需要,使用CACHESIZE选项来改变这个文件缓存的大小。
在使用CACHESIZE选项时,你必须键入命令SFC /CACHESIZE=x,这个x是指你想分配给文件缓存的兆字节数。在指定了新的文件缓存大小后,你必须重启系统并运行SFC /PURGECACHE命令。
通过注册表控制WFP和SFC
在这之前,我解释说注册表控制WFP的一般行为。你可以修改几个不同的注册表键值以控制WFP的行为。你可以在每次运行SFC直接操作这些键的一部分,其他一些有更低级别的功能。比如指定文件缓存或者安装文件的位置。
修改注册表可能是危险的。如果你做了一个错误的修改,可能会导致Windows的崩溃或者破坏你的应用程序,所以我强烈建议在尝试这一节中描述的任何技术之前,先对注册表做一个完整的备份。
为了访问SFC的注册表键,在Run命令中键入REFEDIT命令。这将打开注册表编辑器,现在浏览注册表树找到下面这个键: HKEY_LOCAL_MACHINESOFTWAREMicrosoftWindows NTCurrentVersionWinLogon 通常地,注册表中WinLogon键一般用来控制各种不同的启动选项。虽然许多SFC的选项都可控制SFC是否在启动的的时候运行,但微软已经将SFC相关的注册表键放在这个部分。
SFCDisabled
这个注册表键控制SFC是激活的还是无效的。实际上你只需通过改变DWORD的值,就可以得到四个不同的选项。缺省的DWORD值是0。这个设置激活SFC。通常你不需要改变这个值。然而,你可以在0到4之间修改这个值使得激活SFC但不让它弹出。
如果将内核调试器挂起,你最好关闭SFC。如果正在使用一个内核调试器,你可以将注册表键的DWORD值修改为1,这会关闭SFC并且会在以后的每次启动时都提示你是否再次激活SFC。
你也可以通过将DWORD值设为2来关闭SFC。这个选项只是在下次启动时关闭SFC。没有再激活SFC的选项,因为SFC将在这之后启动时自动激活。
SFCScan
在这之前,我解释了SFC的SCANONCE, SCANBOOT,和REVERT选项。只要你使用这些选项,实际上SFC是在修改SFCScan注册表键。你可以通过改变它的DWORD赋值来修改这个键。 默认的值是0。这个值的意思是不需要在启动时扫描受保护文件。这个设置相当于运行SFC /REVERT命令。 改变DWORD值为1,意思是在每次启动时都扫描受保护文件。设置SFCScan的值为1相当于运行SFC /SCANBOOT命令。
最后,设DWORD值为2就是告诉SFC在下次启动时扫描受保护文件,但并非以后的所有启动。
这相当于运行SFC /SCANONCE命令。
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目录中寻找系统文件。
以上就是XP系统提示正常运行Windows所需的文件已被替换成无法识别的版本的解决方法,有同样问题的朋友可以按照上述的方法进行设置解决!
本文讲解到此结束,希望对大家有所帮助。