Compartir a través de


Detección de reemplazo de recursos

Windows Resource Protection (WRP) impide la sustitución de archivos esenciales del sistema, carpetas y claves del Registro que se instalan como parte de Windows Vista o Windows Server 2008.

WRP protege archivos, carpetas y claves del Registro en Windows Vista o Windows Server 2008 mediante la detección y prevención de intentos de reemplazar recursos protegidos. Esta protección se basa en una lista de control de acceso discrecional (DACL) y listas de control de acceso (ACL) de Windows definidas para los recursos protegidos. El permiso para el acceso total para modificar los recursos protegidos por WRP está restringido a TrustedInstaller. Los recursos protegidos por WRP solo se pueden cambiar mediante los mecanismos de reemplazo de recursos admitidos con el servicio Windows Modules Installer. Las aplicaciones que intentan modificar un recurso protegido por WRP nunca cambian el recurso y pueden recibir un mensaje de error que indica que se denegó el acceso al recurso.

Las aplicaciones e instaladores pueden usar las funciones SfcIsFileProtected y SfcIsKeyProtected para determinar si un archivo o una clave del Registro están protegidos.

**Windows Server 2003 y Windows XP: **

Protección de archivos de Windows (PMA) protege los archivos del sistema mediante la detección de intentos de reemplazar archivos del sistema protegidos. Esta protección se desencadena después de que WFP reciba una notificación de cambio de directorio para un archivo de un directorio protegido. Cuando WFP recibe esta notificación, determina qué archivo ha cambiado. Si el archivo está protegido, PMA busca la firma de archivo en un archivo de catálogo para determinar si el nuevo archivo es la versión correcta. Si la versión del archivo no es correcta, el sistema reemplaza el archivo por la versión correcta de la memoria caché o del medio de distribución, en función de si el archivo se encuentra en la memoria caché. EL PMA busca el archivo correcto en el orden siguiente:

  1. Busque en el directorio de caché.
  2. Busque en la ruta de instalación de red, si el sistema se instaló mediante la instalación de red.
  3. Busque en un CD-ROM de Windows, si el sistema se instaló desde CD-ROM.

Si EL PMA no encuentra automáticamente el archivo en las dos primeras ubicaciones, muestra el siguiente mensaje:

Mensaje de pma que se muestra cuando el archivo no se encuentra en el directorio de caché o la ruta de instalación de red

Si el sistema se instaló mediante un CD-ROM, EL PMA muestra el siguiente mensaje:

mensaje de pma que se muestra para solicitar al usuario que inserte cd-rom de Windows

Si un administrador no ha iniciado sesión, EL PMA no puede mostrar ninguno de estos cuadros de diálogo. EL PMA mostrará el cuadro de diálogo después de que un administrador inicie sesión.

EL PMA también registra el intento de reemplazo de archivos en el registro de eventos del sistema. Si el administrador canceló la restauración del archivo correcto, PMA registra la cancelación.

Recuperar la lista de archivos protegidos

En el ejemplo siguiente se muestra cómo las aplicaciones y los instaladores pueden usar la función SfcGetNextProtectedFile para obtener la lista completa de archivos protegidos.

#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());
   }

}