Обнаружение замены ресурсов
Защита ресурсов 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 (МПП) защищает системные файлы путем обнаружения попыток заменить защищенные системные файлы. Эта защита активируется после того, как МПП получает уведомление об изменении каталога для файла в защищенном каталоге. Когда МПП получает это уведомление, он определяет, какой файл изменился. Если файл защищен, МПП ищет подпись файла в файле каталога, чтобы определить, является ли новый файл правильным. Если версия файла неправда, система заменяет файл правильной версией из кэша или носителя распространения в зависимости от того, находится ли файл в кэше. МПП ищет правильный файл в следующем порядке:
- Выполните поиск в каталоге кэша.
- Выполните поиск по пути установки сети, если система была установлена с помощью сетевой установки.
- Выполните поиск на компакт-диске 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());
}
}