Поделиться через


Обнаружение замены ресурсов

Windows Resource Protection (WRP) предотвращает замену основных системных файлов, папок и разделов реестра, установленных в составе Windows Vista или Windows Server 2008.

WRP защищает файлы, папки и разделы реестра в Windows Vista или Windows Server 2008 путем обнаружения и предотвращения попыток замены защищенных ресурсов. Эта защита основана на списке управления доступом на уровне пользователей Windows (DACL) и списках управления доступом (ACL), определенных для защищенных ресурсов. Разрешение на полный доступ для изменения ресурсов, защищенных WRP, ограничено TrustedInstaller. Ресурсы, защищенные WRP, можно изменить только с помощью поддерживаемых механизмов замены ресурсов со службой установщика модулей Windows. Приложения, пытающиеся изменить ресурс, защищенный WRP, никогда не изменяют ресурс и могут получить сообщение об ошибке с сообщением о том, что доступ к ресурсу был запрещен.

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

**Windows Server 2003 и Windows XP: **

Защита файлов Windows (WFP) защищает системные файлы путем обнаружения попыток замены защищенных системных файлов. Эта защита активируется после того, как ВПП получает уведомление об изменении каталога для файла в защищенном каталоге. Когда МПП получает это уведомление, он определяет, какой файл был изменен. Если файл защищен, ВПП ищет подпись файла в файле каталога, чтобы определить, является ли новый файл правильной версией. Если версия файла не верна, система заменяет файл правильной версией из кэша или носителя распространения в зависимости от того, находится ли файл в кэше. ВПП ищет правильный файл в следующем порядке:

  1. Выполните поиск в каталоге кэша.
  2. Выполните поиск по пути сетевой установки, если система была установлена с помощью сетевой установки.
  3. Выполните поиск на компакт-диске Windows, если система была установлена с компакт-диска.

Если НЕ удается автоматически найти файл в первых двух расположениях, отображается следующее сообщение:

Сообщение wfp отображается, если файл не найден в каталоге кэша или пути установки сети

Если система была установлена с помощью компакт-диска, ВПП отображает следующее сообщение:

Отображается сообщение wfp с запросом на вставку компакт-диска Windows

Если администратор не вошел в систему, ВПП не сможет отобразить ни одно из этих диалоговых окон. ПОСЛЕ входа администратора в систему появится диалоговое окно.

МПП также регистрирует попытку замены файла в журнале системных событий. Если администратор отменил восстановление правильного файла, ВПП регистрирует отмену.

Получение списка защищенных файлов

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

#include <windows.h>
#include <sfc.h>
#include <stdio.h>

#pragma comment(lib, "sfc")

void wmain (int argc, WCHAR ** argv)
{  UNREFERENCED_PARAMETER(argc);    
   PROTECTED_FILE_DATA pfd = {0};
   BOOL fResult;

   wprintf (L"List of protected files:\n\n", argv[1]);

   while (FALSE != (fResult = SfcGetNextProtectedFile (NULL, &pfd)))
   {
      wprintf (L"   %lu   %s\n", pfd.FileNumber, pfd.FileName);
   }

   if (GetLastError() == ERROR_NO_MORE_FILES)
   {
      wprintf (L"\nAll %lu protected files listed\n", pfd.FileNumber);
   }
   else
   {
      wprintf (L"\nerror %lu: SfcGetNextProtectedFile() failed unexpectedly\n", GetLastError());
   }

}