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


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

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

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

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

**Windows Server 2003 и Windows XP: **

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

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

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

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

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

сообщение WFP, отображаемое для запроса пользователя вставить Windows CD-ROM

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

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

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

В следующем примере показано, как приложения и установщики могут использовать функцию 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());
   }

}