리소스 교체 검색
WRP(Windows Resource Protection)는 Windows Vista 또는 Windows Server 2008의 일부로 설치된 필수 시스템 파일, 폴더 및 레지스트리 키를 대체하지 못하도록 방지합니다.
WRP는 보호된 리소스를 교체하려는 시도를 감지하고 방지하여 Windows Vista 또는 Windows Server 2008의 파일, 폴더 및 레지스트리 키를 보호합니다. 이 보호는 보호된 리소스에 대해 정의된 Windows DACL(임의 액세스 제어 목록) 및 ACL(액세스 제어 목록)을 기반으로 합니다. WRP로 보호되는 리소스를 수정하기 위한 모든 액세스 권한은 TrustedInstaller로 제한됩니다. WRP로 보호되는 리소스는 Windows 모듈 설치 관리자 서비스와 함께 지원되는 리소스 대체 메커니즘 을 사용하여만 변경할 수 있습니다. WRP로 보호되는 리소스를 수정하려는 애플리케이션은 리소스를 변경하지 않으며 리소스에 대한 액세스가 거부되었다는 오류 메시지를 받을 수 있습니다.
애플리케이션 및 설치 관리자는 SfcIsFileProtected 및 SfcIsKeyProtected 함수를 사용하여 파일 또는 레지스트리 키가 보호되는지 여부를 확인할 수 있습니다.
**Windows Server 2003 및 Windows XP: **
WFP(Windows 파일 보호)는 보호된 시스템 파일을 바꾸려는 시도를 감지하여 시스템 파일을 보호합니다. 이 보호는 WFP가 보호된 디렉터리의 파일에 대한 디렉터리 변경 알림을 받은 후에 트리거됩니다. WFP는 이 알림을 받으면 어떤 파일이 변경되었는지 확인합니다. 파일이 보호되면 WFP는 카탈로그 파일에서 파일 서명을 조회하여 새 파일이 올바른 버전인지 확인합니다. 파일 버전이 올바르지 않은 경우 시스템은 파일이 캐시에 있는지 여부에 따라 캐시 또는 배포 미디어에서 올바른 버전으로 파일을 바꿉니다. WFP는 다음 순서로 올바른 파일을 검색합니다.
- 캐시 디렉터리를 검색합니다.
- 네트워크 설치를 사용하여 시스템을 설치한 경우 네트워크 설치 경로를 검색합니다.
- 시스템이 CD-ROM에서 설치된 경우 Windows CD-ROM에서 검색합니다.
WFP가 처음 두 위치에서 파일을 자동으로 찾을 수 없는 경우 다음 메시지가 표시됩니다.
CD-ROM을 사용하여 시스템을 설치한 경우 WFP는 다음 메시지를 표시합니다.
관리자가 로그온하지 않으면 WFP에서 이러한 대화 상자 중 하나를 표시할 수 없습니다. WFP는 관리자가 로그온한 후 대화 상자를 표시합니다.
또한 WFP는 시스템 이벤트 로그에 파일 대체 시도를 기록합니다. 관리자가 올바른 파일의 복원을 취소한 경우 WFP는 취소를 기록합니다.
보호된 파일 목록 검색
다음 예제에서는 애플리케이션 및 설치 관리자가 SfcGetNextProtectedFile 함수를 사용하여 보호된 파일의 전체 목록을 가져오는 방법을 보여 줍니다.
#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());
}
}