Защита ресурсов Windows
Защита ресурсов Windows — функция, впервые представленная в операционных системах Windows Vista и Windows Server 2008. Она присутствует во всех последующих версиях Windows и заменила предыдущий механизм защиты файлов Windows. Защита ресурсов Windows предотвращает замену критически важных системных файлов, ключей и разделов реестра, а также системных папок, что способствует снижению вероятности сбоев и повреждений системы[1]. Механизм защиты ресурсов отличается от предыдущей реализации Windows File Protection[1].
Общие сведения
Защита ресурсов Windows (WRP) регистрируется на получение уведомлений об изменениях файлов в процессе Winlogon. Если фиксируется попытка изменить защищённый системный файл, изменённый файл восстанавливается из кэшированной копии, расположенной по адресу %WinDir%\WinSxS\Backup[2]. Защита реализована посредством установки списков дискреционного контроля доступа (DACL) и других списков управления доступом (ACL), определённых для защищённых ресурсов.
Полный доступ к изменению ресурсов, защищённых WRP, разрешён только процессам, использующим службу Windows Modules Installer (англ. TrustedInstaller.exe). Даже пользователи с правами администратора не имеют полного доступа к данным системным файлам; для изменения или замены необходимо использовать компоненты SetupAPI либо произвести операцию захвата права собственности и внести соответствующие записи (Access Control Entries, ACEs) в ACL. Специальная учётная запись TrustedInstaller используется для обеспечения безопасности ключевых файлов операционной системы и реестра.
Защищаемые ресурсы
Защита ресурсов Windows охватывает широкий спектр типов файлов:
*.acm *.ade *.adp *.app *.asa *.asp *.aspx *.ax *.bas *.bat *.bin *.cer *.chm *.clb *.cmd *.cnt *.cnv *.com *.cpl *.cpx *.crt *.csh *.dll *.drv *.dtd *.exe *.fxp *.grp *.h1s *.hlp *.hta *.ime *.inf *.ins *.isp *.its *.js *.jse *.ksh *.lnk *.mad *.maf *.mag *.mam *.man *.maq *.mar *.mas *.mat *.mau *.mav *.maw *.mda *.mdb *.mde *.mdt *.mdw *.mdz *.msc *.msi *.msp *.mst *.mui *.nls *.ocx *.ops *.pal *.pcd *.pif *.prf *.prg *.pst *.reg *.scf *.scr *.sct *.shb *.shs *.sys *.tlb *.tsp *.url *.vb *.vbe *.vbs *.vsmacros *.vss *.vst *.vsw *.ws *.wsc *.wsf *.wsh *.xsd *.xsl
Также WRP защищает ряд критических папок. Папка, содержащая только защищённые файлы WRP, может быть полностью заблокирована — только пользователь TrustedInstaller может создавать файлы или подпапки в такой директории. Частичная блокировка папки позволяет администраторам создавать внутри неё новые элементы. В системе также охраняются ключевые элементы реестра Windows, установленные Windows Vista; если ключ защищён WRP, защита распространяется на все его вложенные разделы и значения.
В кэш-директорию %WinDir%\WinSxS\Backup копируются только те файлы, которые необходимы для перезапуска Windows. Критические файлы, не требующиеся непосредственно для перезагрузки системы, не включаются в кэш; в отличие от Windows File Protection, где кэшировался весь набор защищённых файлов в каталоге Dllcache. Размер кэша и набор копируемых файлов не подлежат изменению[2].
WRP применяет более строгий подход к защите; вследствие этого Windows File Protection недоступна в Windows Vista и новее. Для замены любого защищённого файла раньше был необходим полный отказ от защиты на уровне всей системы, тогда как WRP позволяет работать с отдельными элементами: взяв владение над отдельным объектом, возможно заменить его, при том, что остальные продолжат оставаться защищёнными.
Функция System File Checker интегрирована с WRP[3]. В Windows Vista утилиту Sfc.exe можно применять для проверки отдельных путей, включая системный и загрузочный каталоги.
Методы замены ресурсов
В Windows Vista и Windows Server 2008 полный доступ к защищённым ресурсам WRP предоставляется только пользователю TrustedInstaller. Замена ресурсов службой Windows Modules Installer возможна следующими способами:
- Установка пакетов обновлений[4]
- Установка обновлений и хотфиксов Windows
- Обновление версии операционной системы
Если приложение пытается заменить защищаемый WRP-ресурс иным методом, выводится сообщение об ошибке, и соответствующие действия блокируются[5].


