다음을 통해 공유


오프라인 레지스트리 라이브러리 정보

오프라인 레지스트리 라이브러리는 활성 시스템 레지스트리 외부에서 레지스트리 하이브를 수정하는 데 사용됩니다.

오프라인 레지스트리 라이브러리는 운영 체제 이미지 서비스와 같은 레지스트리 업데이트 시나리오를 위한 것입니다. 오프라인 레지스트리 함수는 표준 레지스트리 함수에서 사용할 수 없는 다음과 같은 기능을 제공합니다.

  • 오프라인 레지스트리 함수를 사용하여 지원되는 레지스트리 형식으로 레지스트리 하이브를 수정할 수 있습니다. 표준 레지스트리 함수는 활성 레지스트리 하이브만 변경할 수 있으며 변경 내용은 시스템에서 실행되는 Windows 버전과 호환되어야 합니다.
  • 오프라인 레지스트리 라이브러리에는 레지스트리 하이브 파일을 열고 파일을 저장하기 위한 쓰기 액세스 권한만 필요합니다. 하이브의 개체에 대해 다른 액세스 검사가 수행되지 않으므로 표준 사용자 권한으로 하이브를 수정할 수 있습니다. 표준 레지스트리 함수를 사용하면 Hive를 활성 레지스트리에 로드하는 것은 관리자 액세스가 필요한 권한 있는 작업입니다.

오프라인 레지스트리 함수는 다음과 같은 이유로 시스템 레지스트리 함수의 대체 함수로 사용하면 안 됩니다.

  • 오프라인 레지스트리 함수를 사용하는 프로세스 간에 레지스트리 하이브를 공유할 수 없습니다.
  • 오프라인 레지스트리 함수는 다중 스레드 애플리케이션의 성능이 심각하게 저하될 수 있는 간단한 잠금을 사용합니다.
  • 오프라인 레지스트리 함수를 사용하여 변경한 내용은 ORSaveHive 함수가 호출될 때까지 저장되지 않습니다.

애플리케이션은 시스템 레지스트리의 보안 요구 사항을 우회하기 위해 오프라인 레지스트리 함수를 사용하면 안 됩니다. Hive를 로드하기 위해 RegLoadKey 함수에 필요한 특별한 권한 없이 실행되는 애플리케이션은 RegLoadAppKey 함수를 사용할 수 있습니다.

Windows Server 2003 및 Windows XP:RegLoadAppKey 함수는 지원되지 않습니다.

오프라인 레지스트리 하이브는 오프라인 레지스트리 함수를 사용하여 메모리에 로드된 레지스트리 하이브입니다. 빈 오프라인 레지스트리 하이브를 만들려면 ORCreateHive 함수를 사용합니다. 기존 레지스트리 하이브를 수정하려면 RegSaveKey 또는 RegSaveKeyEx 함수를 사용하여 활성 시스템 레지스트리의 하이브를 파일에 저장한 다음 OROpenHive 함수를 사용하여 파일을 엽니다.

ORCreateHiveOROpenHive 함수는 오프라인 레지스트리 하이브의 루트 키에 대한 핸들을 반환합니다. 이 핸들은 다음 예외를 제외하고 오프라인 레지스트리 하이브의 다른 키에 대한 핸들처럼 사용할 수 있습니다. ORCreateKeyOROpenKey 함수는 루트 키에 대한 핸들을 반환하는 데 사용할 수 없습니다. ORCloseKey 함수는 루트 키를 닫는 데 사용할 수 없습니다. ORDeleteKey 함수를 사용하여 루트 키를 삭제할 수 없습니다. 이러한 모든 경우 함수는 ERROR_INVALID_PARAMETER 함께 실패합니다.

ORCreateKey 함수를 사용하여 열려 있는 오프라인 레지스트리 하이브에 키를 추가하고 ORSetValue 함수를 사용하여 키의 값을 설정합니다. 오프라인 레지스트리 라이브러리는 키 및 값 열거, 검색 및 삭제, 보안 및 가상화 동작과 같은 키 특성 설정과 같은 다른 기본 레지스트리 작업을 지원합니다. 함수 목록은 오프라인 레지스트리 라이브러리 함수를 참조하세요.

열린 오프라인 레지스트리 하이브에 대한 변경 내용을 저장하려면 ORSaveHive 함수를 사용하여 하이브를 파일에 저장합니다. ORSaveHive가 호출되지 않으면 변경 내용이 유지되지 않습니다. 하이브를 저장한 후 ORCloseHive 함수를 사용하여 하이브와 연결된 무료 리소스를 닫습니다.

오프라인 레지스트리 하이브는 OROpenHive 함수를 사용하여 열 때만 유효성이 검사됩니다. 하이브가 손상되면 작업이 실패합니다. 하이브를 복구하려고 시도하지 않습니다. Hive의 개체에 대한 액세스 검사는 Hive가 RegLoadKey 함수를 사용하여 활성 레지스트리에 로드될 때까지 수행되지 않습니다.

오프라인 레지스트리 함수는 미리 정의된 키를 지원하지 않습니다.

오프라인 레지스트리 함수에 전달된 모든 키 및 값 이름 문자열은 유니코드여야 합니다.

오프라인 레지스트리 Library_Functions