Rilevamento della sostituzione delle risorse
Windows Resource Protection (WRP) impedisce la sostituzione di file di sistema, cartelle e chiavi del Registro di sistema essenziali installati come parte di Windows Vista o Windows Server 2008.
WRP protegge i file, le cartelle e le chiavi del Registro di sistema in Windows Vista o Windows Server 2008 rilevando e impedendo tentativi di sostituire le risorse protette. Questa protezione si basa su un elenco di controllo degli accessi discrezionale di Windows e sugli elenchi di controllo di accesso definiti per le risorse protette. L'autorizzazione per l'accesso completo per modificare le risorse protette da WRP è limitata a TrustedInstaller. Le risorse protette da WRP possono essere modificate solo usando i meccanismi di sostituzione delle risorse supportati con il servizio Windows Modules Installer. Le applicazioni che tentano di modificare una risorsa protetta da WRP non cambiano mai la risorsa e possono ricevere un messaggio di errore che indica che l'accesso alla risorsa è stato negato.
Le applicazioni e i programmi di installazione possono usare le funzioni SfcIsFileProtected e SfcIsKeyProtected per determinare se è protetta una chiave del file o del Registro di sistema.
**Windows Server 2003 e Windows XP: **
Windows File Protection (WFP) protegge i file di sistema rilevando i tentativi di sostituire i file di sistema protetti. Questa protezione viene attivata dopo che WFP riceve una notifica di modifica della directory per un file in una directory protetta. Quando il WFP riceve questa notifica, determina quale file è stato modificato. Se il file è protetto, WFP cerca la firma del file in un file di catalogo per determinare se il nuovo file è la versione corretta. Se la versione del file non è corretta, il sistema sostituisce il file con la versione corretta dalla cache o dal supporto di distribuzione, a seconda che il file si trovi nella cache. IL WFP cerca il file corretto nell'ordine seguente:
- Cercare la directory della cache.
- Cercare il percorso di installazione della rete, se il sistema è stato installato usando l'installazione di rete.
- Cercare in un CD-ROM di Windows, se il sistema è stato installato da CD-ROM.
Se il WFP non riesce a trovare automaticamente il file nelle prime due posizioni, viene visualizzato il messaggio seguente:
Se il sistema è stato installato usando un CD-ROM, IL WFP visualizza il messaggio seguente:
Se un amministratore non è connesso, IL WFP non può visualizzare una di queste finestre di dialogo. IL WFP visualizzerà la finestra di dialogo dopo l'accesso di un amministratore.
WFP registra anche il tentativo di sostituzione dei file nel registro eventi di sistema. Se l'amministratore ha annullato il ripristino del file corretto, IL WFP registra l'annullamento.
Recupero dell'elenco di file protetti
Nell'esempio seguente viene illustrato come le applicazioni e i programmi di installazione possono usare la funzione SfcGetNextProtectedFile per ottenere l'elenco completo dei file protetti.
#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());
}
}