Partager via


Détection du remplacement des ressources

La protection des ressources Windows (WRP) empêche le remplacement des fichiers système essentiels, des dossiers et des clés de Registre installés dans le cadre de Windows Vista ou de Windows Server 2008.

WRP protège les fichiers, les dossiers et les clés de Registre sur Windows Vista ou Windows Server 2008 en détectant et en empêchant les tentatives de remplacement des ressources protégées. Cette protection est basée sur une liste de contrôle d’accès discrétionnaire (DACL) Windows et des listes de contrôle d’accès (ACL) définies pour les ressources protégées. L’autorisation d’accès complet pour modifier les ressources protégées par WRP est limitée à TrustedInstaller. Les ressources protégées par WRP ne peuvent être modifiées qu’à l’aide des mécanismes de remplacement des ressources pris en charge avec le service Windows Modules Installer. Les applications qui tentent de modifier une ressource protégée par WRP ne modifient jamais la ressource et peuvent recevoir un message d’erreur indiquant que l’accès à la ressource a été refusé.

Les applications et les programmes d’installation peuvent utiliser les fonctions SfcIsFileProtected et SfcIsKeyProtected pour déterminer si un fichier ou une clé de Registre est protégé.

**Windows Server 2003 et Windows XP : **

La Protection des fichiers Windows (PAM) protège les fichiers système en détectant les tentatives de remplacement des fichiers système protégés. Cette protection est déclenchée après que la WFP a reçu une notification de modification d’annuaire pour un fichier dans un répertoire protégé. Lorsque la WFP reçoit cette notification, elle détermine le fichier qui a changé. Si le fichier est protégé, PAM recherche la signature du fichier dans un fichier catalogue pour déterminer si le nouveau fichier est la version correcte. Si la version du fichier n’est pas correcte, le système remplace le fichier par la version correcte à partir du cache ou du support de distribution, selon que le fichier se trouve dans le cache. PAM recherche le fichier correct dans l’ordre suivant :

  1. Recherchez dans le répertoire du cache.
  2. Recherchez le chemin d’installation réseau, si le système a été installé à l’aide de l’installation réseau.
  3. Recherchez sur un CD-ROM Windows, si le système a été installé à partir du CD-ROM.

Si PAM ne peut pas trouver automatiquement le fichier dans les deux premiers emplacements, le message suivant s’affiche :

message pam affiché lorsque le fichier est introuvable dans le répertoire du cache ou le chemin d’installation réseau

Si le système a été installé à l’aide d’un CD-ROM, PAM affiche le message suivant :

message pam affiché pour inviter l’utilisateur à insérer un cd-rom Windows

Si un administrateur n’est pas connecté, pam ne peut pas afficher l’une ou l’autre de ces boîtes de dialogue. PAM affiche la boîte de dialogue une fois qu’un administrateur se connecte.

PAM consigne également la tentative de remplacement de fichier dans le journal des événements système. Si l’administrateur a annulé la restauration du fichier correct, PAM consigne l’annulation.

Récupération de la liste des fichiers protégés

L’exemple suivant montre comment les applications et les programmes d’installation peuvent utiliser la fonction SfcGetNextProtectedFile pour obtenir la liste complète des fichiers protégés.

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

}