2007年7月5日星期四

Scannow sfc

Scannow sfc



Published

By Marc Liron - Microsoft MVP In Digital Media




How to use the scannow sfc tool in Windows XP 






Download this page as a PDF file here:

Scannow SFC























 











Windows XP has the ability to protect itself from
system instability caused by
3rd party software overwriting important system files. This used to be
(and still is in fact), a problem with Windows 95 and Windows 98.



With the introduction of Windows Millennium Edition, Microsoft
made a real effort to
stop this from happening.



 
























Now in Windows XP we
have a much more refined protection of these important files....



This system is called:



                               
Windows File Protection



By default, Windows
File Protection is always enabled and allows Windows

digitally signed files to replace existing files safely. Currently,
signed files are distributed


through:



# Windows Service Packs


# Hotfix
distributions


# Operating
system upgrades



# Windows
Update


# Windows
Device Manager

 


If you introduce a
file replacement in any other way, Windows File protection will
overwrite your file!


An important part of
Windows File Protection is the command line utility:



System File
Checker (sfc.exe)


You will often see
references to scannow sfc in online newsgroups etc. This is a
great tool for troubleshooting Windows XP problems.


 



How to use scannow sfc...





The main reason for using this utility is when you suspect there
may be a problem with a Windows XP system file.


Perhaps you get a dialog box appear informing you of a problem with
a .dll file, or your program will just not load! It is therefore worth
checking to see if there are any corrupt system files using scannow
sfc.


To do this simply go to the Run box on the Start Menu
and type in:


sfc /scannow



This command will immediately initiate the Windows File Protection
service 
to scan all protected files and verify their integrity, replacing any
files with which it finds a problem.


The following should appear to give an indication of how long the
process is taking.


 



scannow sfc


 


In an ideal world that would be the end of the story... Any
corrupt, missing or incorrect files would be replaced by this process.



However, things can go wrong and the following guide should help!


The #1 complaint with scannow sfc is the following dialog box
appearing:



scannow sfc image

 


Why does this
happen?







Well, in your computer's registry, are several settings that are
checked when you run scannow sfc.


As mentioned earlier in this article, the Windows File
Protection
service constantly monitors for any changes to the main
system files. Well Windows XP keeps a cache (copy) of these essential
files at the following location:


C:WINDOWS\System32\Dllcache  (assuming C: is your system root
which it probably is.)


NB - The dllcache folder is extremely important so Windows
XP hides it from you! To view it go to: My Computer > Tools > Folder
Options > View > "uncheck" Hide protected operating system files.



If that's the case on your computer then there is normally no need
for the original XP CD to be inserted as your computer has a "copy" it
can get hold of in this cache...


But, if the Dllcache folder, or part of it, has become
corrupted for some reason then you will be prompted for the XP CD - so
your computer can get a clean copy!


Having said that not ALL installations of Windows XP have
ALL the system files cached into this folder! You may only have around
50MB of files in this folder under Windows XP depending on the quota
settings in the registry. (Under Windows 2003 Server the default is
300MB of system files!)



Annoying, YES! 


Is there a workaround YES!


As well as having a cache of all the system files on your PC, I
like to have the I386 folder from the XP CD installed on the computer
as well. After doing this I then modify the registry to tell it the
source path for these files... Why? Well not only does this prevent
99% of request for the the XP CD with Windows File Protection. But the
I386 folder also contains many other files that are sometimes needed
by the operating system and this stops those requests for the XP CD
too!


NB - With today's large hard drives you are not going to
notice this 475 MB folder on your computer, but older systems
may not have the space for this...



Step 1


You will need to get your XP CD and locate the folder called:


I386


This is a major folder and should be one of the first you see, now
copy this onto your hard drive into the system root. For most of you
that is going to be C:\  so you should end up with a
folder that looks like:  C:\I386


 



-----------------------------


Step 2


Now you will need to tell your computer you now have the files on
your PC. We do this is the registry (type regedit in the Run
box on the start menu) by navigating to:


HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\Windows\

CurrentVersion\Setup



You will see various entries here on the right hand side. The one
we want is called:


SourcePath


It probably has an entry pointing to your CD-ROM drive, and that is
why it is asking for the XP CD. All we need to do is change it to:


C:\


Simply double click the SourcePatch setting and a new box
will pop up allowing you to make the change.



Now restart your computer and try scannow sfc again!


------------------------------


Other Problems with scannow
sfc...


#1


Has the CD Drive's drive letter changed (perhaps by the addition of
another hard drive, partition, or removable drive) since Windows XP
was first installed? If so, simply edit the registry key
HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\Windows\


CurrentVersion\Setup\SourcePath

to reflect the changed drive letter.


After you restart the computer, WFP and sfc /scannow uses the new
source path instead of prompting for the Windows XP installation
CD-ROM


#2


Has the registry key: HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\Windows\

CurrentVersion\Setup\SourcePath
got an incorrect entry? The SourcePath entry does NOT include the
path location till the I386 folder. It completes one folder ahead to
reach the I386 folder. 



Example:



If the I386 directory is at C:\I386, the SourcePath value would
be C:\


#3


If the problem persists and you have the correct path for your I386
folder then the I386 folder is corrupted. To solve this problem copy
I386 folder from the CD-ROM to your system restart the system and then


perform sfc /scannow again.


#4


You do not have an XP retail CD with an I386 folder on it. If you
have a restore CD from your PC manufacturer then you may have to
explore the CD to find the folder.


#5


You still keep being prompted for the XP CD yet you have done all
in this article! There is another setting in the registry that may be
causing the problem. Navigate to:


HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\Windows NT\CurrentVersion\SourcePath



Make sure the entry here is the same path to the I386 folder as
used above.


#6


Systems administrators can enforce security policies that may
include changes to the Windows File Protection settings. You will need
to speak with your network administrator about this, but it is
important to bear in mind when Windows starts up, the Windows File
Protection service synchronizes (copies) the WFP settings from the
following registry key:


HKEY_LOCAL_MACHINE\Software\Policies\Microsoft\Windows
NT\Windows File Protection




to the following registry key:



HKEY_LOCAL_MACHINE\Software\Microsoft\Windows NT\CurrentVersion\Winlogon



Therefore, if any of the following values are present in the
HKEY_LOCAL_MACHINE\Software\Policies\Microsoft\Windows NT\Windows File
Protection key
, they will take precedence over the same values
under the HKEY_LOCAL_MACHINE\Software\Microsoft\Windows NT\CurrentVersion\Winlogon
key.


This will not effect scannow sfc so much, but WILL make an
impact if any of the other sfc.exe "switches" have been used!
(More about these at the end of this article.)



#7


When you run scannow at logon you do not get a progress bar... This
can easily be remedied by adding a new DWORD:  SFCShowProgress
to the registry key:


HKEY_LOCAL_MACHINE\Software\Microsoft\Windows NT\CurrentVersion\Winlogon


the values available are: 0 = disabled, 1 = enabled



------------------------------------


What about Windows Updates.....


You may be asking yourself how does sfc.exe know how to
check for updated Windows system files? Well during OS upgrades, service
pack installations etc.. the dllcache folder should be
updated with these new files.


As an example the recent Windows XP Hotfix - KB828035 updated the
system file wkssvc.dll  A new version of the file was
placed in C:\WINDOWS\system32 and a copy in the cache:

C:\WINDOWS\system32\dllcache 
A copy of the old system file
is archived in: C:\WINDOWS\$NtUninstallKB828035$


There is another location the
Windows File protection service uses and that is the I386 folder in
C:\WINDOWS\ServicePackFiles
  When you install a service pack,
like SP1. Any new system drivers are cached in this location too.


If you have odd problems with running scannow sfc and nothing else
in the article has resolved it, then take a look at the entry in:



HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\Windows\

CurrentVersion\Setup

\ServicePackSourcePath


This should be pointing to the location
C:\WINDOWS\ServicePackFiles
(assuming C:\ is the boot drive.)


             -------------------------------------------------------



For those of you who are familiar with sfc.exe under Windows
2000 professional. It is worth noting that the following two options are NOT
available under Windows XP.


These are:


sfc /cancel - In Windows 2000, this command immediately
cancels all pending scans of protected system files. This option has
no effect in Windows XP.




sfc /quiet - In Windows 2000 this sets Windows File Protection
to replace any incorrect system files detected with the appropriate
version from the dll cache without any user notification. This option
has no effect in Windows XP.






Thanks for reading this article on scannow sfc.




More info can be
found about the various switches available with sfc.exe under Windows
XP


here
.



You find out more about the
Windows
File Protection
service here.



...A recent email from a site visitor:




-------------------------------------------------------------------------


First Name: Dave

Last Name: Douglas

E-mail Address: "withheld"



Comments: re: your item on sfc /scannow

I found that I had to modify both the ServicePackSourcePath
and the SourcePath


to C:\Windows where the I386 folder was.

A great tip!

 

没有评论: