Erkennen des Ressourcenaustauschs
Windows Resource Protection (WRP) verhindert den Austausch wesentlicher Systemdateien, Ordner und Registrierungsschlüssel, die als Teil von Windows Vista oder Windows Server 2008 installiert werden.
WRP schützt Dateien, Ordner und Registrierungsschlüssel unter Windows Vista oder Windows Server 2008, indem Versuche zum Ersetzen geschützter Ressourcen erkannt und verhindert werden. Dieser Schutz basiert auf einer Windows-Zugriffssteuerungsliste (DACL) und Zugriffssteuerungslisten (Access Control Lists, ACL), die für geschützte Ressourcen definiert sind. Die Berechtigung für den vollzugriff zum Ändern von WRP-geschützten Ressourcen ist auf TrustedInstaller beschränkt. WRP-geschützte Ressourcen können nur mithilfe der unterstützten Ressourcenersetzungsmechanismen mit dem Windows Modules Installer-Dienst geändert werden. Anwendungen, die versuchen, eine WRP-geschützte Ressource zu ändern, ändern die Ressource nie und erhalten möglicherweise eine Fehlermeldung, die besagt, dass der Zugriff auf die Ressource verweigert wurde.
Anwendungen und Installationsprogramme können die Funktionen SfcIsFileProtected und SfcIsKeyProtected verwenden, um zu bestimmen, ob eine Datei oder ein Registrierungsschlüssel geschützt ist.
**Windows Server 2003 und Windows XP: **
Windows File Protection (WFP) schützt Systemdateien, indem Versuche erkannt werden, geschützte Systemdateien zu ersetzen. Dieser Schutz wird ausgelöst, wenn WFP eine Verzeichnisänderungsbenachrichtigung für eine Datei in einem geschützten Verzeichnis empfängt. Wenn WFP diese Benachrichtigung erhält, wird bestimmt, welche Datei geändert wurde. Wenn die Datei geschützt ist, sucht WFP die Dateisignatur in einer Katalogdatei, um zu ermitteln, ob es sich bei der neuen Datei um die richtige Version handelt. Wenn die Dateiversion nicht korrekt ist, ersetzt das System die Datei durch die richtige Version aus dem Cache oder dem Verteilungsmedium, je nachdem, ob sich die Datei im Cache befindet. WFP sucht nach der richtigen Datei in der folgenden Reihenfolge:
- Durchsuchen Sie das Cacheverzeichnis.
- Suchen Sie den Netzwerkinstallationspfad, wenn das System mithilfe der Netzwerkinstallation installiert wurde.
- Suchen Sie nach einer Windows-CD-ROM, wenn das System von CD-ROM installiert wurde.
Wenn WFP die Datei nicht automatisch an den ersten beiden Speicherorten finden kann, wird die folgende Meldung angezeigt:
Wenn das System mit einer CD-ROM installiert wurde, zeigt WFP die folgende Meldung an:
Wenn ein Administrator nicht angemeldet ist, kann WFP keines dieser Dialogfelder anzeigen. WFP zeigt das Dialogfeld an, nachdem sich ein Administrator angemeldet hat.
WFP protokolliert auch den Dateiersetzungsversuch im Systemereignisprotokoll. Wenn der Administrator die Wiederherstellung der richtigen Datei abgebrochen hat, protokolliert WFP den Abbruch.
Abrufen der Liste der geschützten Dateien
Das folgende Beispiel zeigt, wie Anwendungen und Installationsprogramme die SfcGetNextProtectedFile-Funktion verwenden können, um die vollständige Liste der geschützten Dateien abzurufen.
#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());
}
}