Не бойся идти не туда – бойся никуда не идти.
(Д. Емец)


четверг, 2 июня 2011 г.

Особенности работы средства проверки системных файлов (SFC.exe) в среде Windows RE

Взяться за написание статьи подвигло непонятное поведение утилиты sfc. exe в среде Windows RE при загрузке с установочного диска или диска восстановления, а именно предложение перезагрузить систему и выполнить проверку еще раз.

Немного информации. Средство проверки системных файлов позволяет проверить версии всех защищенных файлов. Если при проверке системных файлов обнаруживается, что защищенный файл был изменен, то он заменяется его исходной версией.

SFC в среде Windows


Для выполнения подобной проверки в Windows 7 достаточно запустить командную строку с правами администратора и выполнить:
sfc /scannow
Ниже приводится таблица с синтаксисом утилиты и с пояснением значений используемых ключей.

Таблица 1 - Синтаксис утилиты sfc.exe


SFC [/SCANNOW] [/VERIFYONLY] [/SCANFILE=<файл>] [/VERIFYFILE=<файл>]
[/OFFWINDIR=<автономная папка Windows> /OFFBOOTDIR=<автономная папка загрузки>]

/SCANNOW

Проверка целостности всех защищенных системных файлов и восстановление, по возможности, проблемных файлов.

/VERIFYONLY

Проверка целостности всех защищенных системных файлов. Восстановление файлов не выполняется.

/SCANFILE

Проверка целостности указанного файла и его восстановление при обнаружении проблем. В параметре <файл> следует указать полный путь

/VERIFYFILE

Проверка целостности файла, полный путь к которому указан в параметре <файл>. Восстановление файлов не выполняется.

/OFFBOOTDIR

Расположение автономного каталога загрузки для автономного восстановления

/OFFWINDIR

Расположение автономного каталога Windows для автономного восстановления

например:

sfc /SCANNOW

sfc /VERIFYFILE=c:\windows\system32\kernel32.dll

sfc /SCANFILE=d:\windows\system32\kernel32.dll /OFFBOOTDIR=d:\ /OFFWINDIR=d:\windows

sfc /VERIFYONLY

SFC в среде Windows RE

Как я говорил вначале, при попытке выполнить команду
sfc /scannow
в среде Windows RE вы получаете предложение перезагрузить систему и выполнить проверку еще раз. И так - до бесконечности.
Рисунок 1 – Запуск утилиты в среде восстановления без ключей и требование перезагрузки
Подобное поведение имеет вполне логичное объяснение: для среды Windows RE раздел диска, с находящейся на ней операционной системой, является автономным каталогом. Следовательно, запуск утилиты с ключами /OFFBOOTDIR и /OFFWINDIR обязателен. Дальше выясним значения этих ключей.
Расположение и буквы разделов в проводнике Windows 7 или в оснастке управления дисками могут отличаться от букв, присвоенных разделам в среде восстановления. Обратите внимание, что на рисунках ниже раздел с системой имеет букву С.
Рисунок 2 – Раздел с системой в проводнике Windows
Рисунок 3 – Раздел с системой в оснастке "Управление дисками"
Для определения буквы, присвоенной разделу с системой в среде восстановления, можно поступить так, либо воспользоваться утилитой DISKPART.
Загрузитесь в среду восстановления с установочного диска Windows 7, войдите в командную строку и выполните последовательно:
DISKPART
List disk
Sel disk 0
Detail disk
Комментарий к командам:
  • Запуск DISKPART
  • Вывод списка жестких дисков, установленных в компьютере с присвоенными им номерами. Нужный номер будет использован в следующей команде. Если диск один, то выполнять команду не нужно.
  • Выделение для работы (передача фокуса) жесткому диску с разделом, на котором установлена система.
  • Получение информации об имеющихся разделах на выбранном диске с указанием присвоенных им букв.
Рисунок 4 – Определение буквы системного раздела и выполнение проверки в среде Windows RE
Буква того раздела, на котором установлена Windows 7, нужна будет на следующем шаге. В нашем случае это буква Е (рис. 4).
Обязательно завершите работу с DISKPART:
EXIT
Наконец, выполним проверку целостности системных файлов:
sfc /scannow /OFFBOOTDIR=E:\ /OFFWINDIR=E:\windows
В значении обоих ключей используется одна и та же буква.
Будьте внимательны! Если в синтаксисе команды или в определении буквы системного раздела будут допущены ошибки, проверка не сможет быть выполнена.
Для быстрого определения букв разделов в среде Windows RE можете воспользоваться способом Как быстро определить буквы дисков в среде восстановления или Windows PE
Большое спасибо моему коллеге Vancouver, модератору форума Windows 7, за помощь в подготовке этой статьи.

5 комментариев:

  1. Здравствуйте!
    При запуске этой команды sfc /scannow /OFFBOOTDIR=E:\ /OFFWINDIR=E:\windows, в моем случае диск В появилась запись
    - защита ресурсов виндовс не может выполнить запрошенную операцию.
    Что посоветует в данном случае.
    Спасибо

    ОтветитьУдалить
    Ответы
    1. А вы правильно определили букву раздела с системой?

      Удалить
  2. На одной системе с Win7 x64 SP1 столкнулся со следующей проблемой при выполнении утилиты SFC из Win RE (как при загрузке локального Win RE, так и с установочного диска Win): Защите ресурсов Windows не удается запустить службу восстановления. Пути указаны верно.

    Нашел в сети рекомендацию по данной ошибке: проверить службу «Установщик модулей Windows». Запустил эту службу в Win_RE из командной строки (net start TrustedInstaller) - не помогло.

    Основная ОС загружается и работает, в ней команда sfc /scannow запускается нормально. Но проверка-восстановление завершается отрицательным результатом даже с примонтированным в виртуальный привод образом установки Win7SP1_x64.

    Система, на первый взгляд, работает нормально, но некоторые обновления не устанавливаются, после других система "жестко" "глючит", а при установке отдельных система вовсе умирает. Помогает откат к точке восстановления, созданной перед установкой обновлений. Временное решение - выключил установку обновлений. Но хотел бы найти системное решение проблемы.

    Данную систему устанавливал не я, я получил ее "готовой". История данной системы мне не известна.

    ОтветитьУдалить
  3. У меня вопрос, почему мы в /offbootdir не указываем раздел который зарезервирован системой ?

    ОтветитьУдалить
    Ответы
    1. Потому, что каталог загрузки системы - это каталог на разделе с установленной системой

      Удалить