System Files aren’t as much of a problem in Windows Millennium because of a new feature called System File Protection, which monitors attempts to modify protected system files. If a protected file gets overwritten, deleted or renamed, SFP will replace it with the original correct version. This means that software installations cannot install their own custom or older versions of dlls, except for use in their own directories. This is permitted, but frowned upon because if two incompatible versions of the same dll are in memory it can still cause instability. Vendors are encouraged to make their products compatible with current versions.
Here’s how WinME System File Protection works. You launch a software installation, that replaces some system files with incorrect versions. WinME first stores a copy of the original files and then lets the installer replace them, so that it doesn’t cause the installation to fail. It then checks a database of catalogue files to determine whether or not the replacement of files were valid updates. If valid, SFP allows the files to be replaced. Otherwise, after the installation completes, WinME silently copies back the original files, without any indication to the user and then deletes the copy of the originals it made during the installation.
There are approximately 800 protected system files under the WinME System File Protection scheme. These files can be replaced only in the following manner. This is straight from the horse’s mouth (Microsoft):
Unfortunately, the System File Protection scheme has no mechanism to detect or prevent files from being corrupted. In the (relatively) rare event that occurs, you will have to extract a new copy from the WinME source files.
While Windows Millennium Edition doesn’t have a utility that’s anything like the Windows 98 System File Checker, you can extract single files using a function found within the Microsoft Configuration Utility. Go to Start / Run, type msconfig and press Enter. On the General tab, you’ll see a button called Extract File. If you click that button, you can enter the name of the file you wish to extract, or browse for it. Click Start and you’ll be prompted to enter (or browse for) the Restore From (e.g. \WINME on the Windows Millennium Edition CD or perhaps the directory on your hard drive you copied the source files to, or c:\windows\options\install where they were automatically copied if you had enough disk space during setup) and Save File In directories.
Unfortunately there is still a problem with this. If you try to replace a file that’s protected or in use, you will just get an error that the file is protected and cannot be overwritten. I suppose that would be useful for files that the system recognizes as no longer present but quite frankly it otherwise stinks. Where does that leave us? There is little recourse but to boot with a Windows Millennium Startup Disk (EBD) and use the DOS Extract command.
Using extract.exe in Windows Millennium Edition
You could use the Extract command in a DOS prompt Window to find the file or extract it to a temporary directory, but you’re not going to be able to replace files that are in use or protected. For example, if I wanted to find msvcrt.dll in the Windows ME cabinet files I could use the following procedure:
Change to the \WINME directory on the CD-ROM or to the directory on the hard disk where the source files have been copied. Extract.exe is in that directory as well as the cabinet files. Substitute the correct drive letter for your CD-ROM drive – I will use E: for this example.
EXTRACT /A /D WIN_10.CAB MSVCRT.DLL | MORE
The usage of the extract command hasn’t changed. The /A switch causes extract.exe to search all the cabinet files in sequences, starting with the file specified. The /D switch causes extract.exe to only display the file when found. The | more (pipe symbol to direct the output to more.com) allows you to press any key to display the next screen. It will fly by too quickly otherwise.
You could also extract the file to a temporary directory for comparison purposes, then later boot with a DOS bootdisk and perform the old switcheroo (rename the old and copy the new).
EXTRACT /A /L C:\TEMPDIR WIN_10.CAB MSVCRT.DLL
The /L switch is used to specify the location to extract the file to.
To actually replace a file you believe to be corrupted, that is in use or protected, you must boot with the Windows ME Startup Disk (EBD) and use the extract command to replace it. Put the diskette in the drive and restart your computer. If you need to use the CD-ROM, choose the With CD-ROM Support boot option. If you have the source files on the hard disk, choose Without CD-ROM Support. You will be at the A:\> prompt. Change to the appropriate directory containing the WinME source files and use the following command to replace (in this example) msvcrt.dll
EXTRACT /A /L C:\WINDOWS\SYSTEM WIN_10.CAB MSVCRT.DLL
When the file is found, you will be prompted. Say Y to overwriting it. Eject the floppy disk and press Ctrl-Alt-Del to restart Windows Millennium normally.
Windows Millennium also has a System Restore option that you can access through the msconfig utility or under Start / Programs / Accessories / System Tools / System Restore. You can create a “Save Point” immediately before installing software, or you can restore one of the automatically created “System Check Points”. How it works is, as changes are made to your hard disks, they are tracked and patterns are written to the _Restore folders and stored in compressed cabinet files. When you restore a Save Point or System Check Point, it will restore your system to the same configuration it was in before.
I must warn you about this, however. While it will certainly restore your registry and other configuration files to the state they were in before you panicked and restored a Save Point, it will also remove any new program files (for example, files with the extension .dll, .exe, .com, .drv and .sys) that are not stored in your My Documents folder. This means, any new programs (perhaps programs that don’t even write to the registry) or any driver files you’ve extracted to directories will be removed from the file allocation tables, effectively deleting them.
Fortunately, the WinME System Restore has an undo feature that can be invoked from within the System Restore applet or from the WinME startup disk. You can use this to undo the last System Restore and the deleted files will be recovered.