레지스트리 키에 안전하게 액세스
고객 문제는 다음과 같은 타사 디바이스 설치 애플리케이션과 같은 외부 구성 요소로 자주 추적됩니다.
중요한 레지스트리 키를 삭제합니다.
중요한 레지스트리 키의 액세스 권한을 수정합니다.
외부 구성 요소에서 발생하는 많은 문제는 레지스트리 키에 대한 KEY_ALL_ACCESS 액세스 권한을 사용하여 발생합니다. Windows Server 2003부터 SetupDiCreateDevRegKey 는 KEY_READ 및 KEY_WRITE 액세스 권한만 부여하고 KEY_ALL_ACCESS 부여하지 않습니다. Windows Vista부터 추가 KEY_ALL_ACCESS 제한이 적용됩니다.
레지스트리 키에 안전하게 액세스하려면 다음 지침을 따릅니다.
SetupAPI, 구성 관리자 함수 및 기타 지원되는 디바이스 관련 API만 사용하여 디바이스 레지스트리 키, 특히 디바이스의 하드웨어 키 및 소프트웨어 키를 엽니다.
이러한 함수는 액세스 권한 제한으로 인해 발생하는 일반적인 문제를 해결합니다.
레지스트리 키의 위치와 형식은 여러 버전의 Windows 간에 변경될 수 있습니다. 디바이스 및 드라이버 설치에 사용되는 레지스트리 키 또는 값의 위치, 형식 또는 의미에 대해 가정하지 마세요.
레지스트리 키 및 트리에 대한 자세한 내용은 레지스트리 트리 및 디바이스 및 드라이버용 키를 참조하세요.
레지스트리를 사용하여 디바이스의 내부 설정에 직접 액세스하거나 수정하지 마세요.
다음과 같이 각 작업에 필요한 최소 액세스 권한만 요청합니다.
KEY_SET_VALUE
KEY_CREATE_SUB_KEY
KEY_QUERY_VALUE
KEY_ENUMERATE_SUB_KEYS
레지스트리에서 디바이스 설정 클래스 키를 직접 열지 마세요. 모든 레지스트리 키와 마찬가지로 디바이스 설정 클래스 키의 위치와 이름은 Windows 버전 간에 변경될 수 있습니다. 디바이스 설정 클래스 키에 제대로 액세스하는 방법에 대한 자세한 내용은 디바이스 설정 클래스에 대한 레지스트리 키 열기를 참조하세요.
레지스트리에서 디바이스 인터페이스 클래스 키를 직접 열지 마세요. 레지스트리 키와 마찬가지로 디바이스 인터페이스 클래스 키의 위치와 이름은 Windows 버전 간에 변경될 수 있습니다.
디바이스 인터페이스 클래스 키를 안전하게 열려면 ulFlags 매개 변수에서 CM_OPEN_CLASS_KEY_INTERFACE 설정하는 CM_Open_Class_Key 사용하거나 SetupDiOpenClassRegKeyEx를 사용하고 Flags 매개 변수에서 DIOCR_INSTALLER 설정합니다.
INF 지시문만 사용하여 운영 체제에서 사용하도록 예약된 레지스트리 키를 수정합니다. 자세한 내용은 INF 지시문 요약을 참조하세요.
클래스 설치 관리자 및 공동 설치 관리자는 레지스트리 함수를 호출하여 운영 체제에서 사용하도록 예약된 레지스트리 값을 만들거나 변경하거나 삭제할 수 없습니다.
레지스트리 키의 액세스 권한에 대한 자세한 내용은 레지스트리 키 보안 및 액세스 권한을 참조하세요.