다음을 통해 공유


RegOpenKeyExA 함수(winreg.h)

지정된 레지스트리 키를 엽니다. 키 이름은 대/소문자를 구분하지 않습니다.

키에 대해 트랜잭션된 레지스트리 작업을 수행하려면 RegOpenKeyTransacted 함수를 호출합니다 .

구문

LSTATUS RegOpenKeyExA(
  [in]           HKEY   hKey,
  [in, optional] LPCSTR lpSubKey,
  [in]           DWORD  ulOptions,
  [in]           REGSAM samDesired,
  [out]          PHKEY  phkResult
);

매개 변수

[in] hKey

열린 레지스트리 키에 대한 핸들입니다. 이 핸들은 RegCreateKeyEx 또는 RegOpenKeyEx 함수에서 반환되거나 다음 미리 정의된 키 중 하나일 수 있습니다.

HKEY_CLASSES_ROOTHKEY_CURRENT_CONFIGHKEY_CURRENT_USERHKEY_LOCAL_MACHINEHKEY_USERS

[in, optional] lpSubKey

열 레지스트리 하위 키의 이름입니다.

키 이름은 대/소문자를 구분하지 않습니다.

lpSubKey 매개 변수가 NULL 또는 빈 문자열에 대한 포인터이고 hKey가 미리 정의된 키인 경우 시스템은 미리 정의된 키를 새로 고치고 phkResult는 함수에 전달된 동일한 hKey 핸들을 받습니다. 그렇지 않으면 phkResult 는 열린 키에 대한 새 핸들을 받습니다.

자세한 내용은 레지스트리 요소 크기 제한을 참조하세요.

[in] ulOptions

키를 열 때 적용할 옵션을 지정합니다. 이 매개 변수를 0 또는 다음으로 설정합니다.

의미
REG_OPTION_OPEN_LINK
키는 기호 링크입니다. 레지스트리 기호 링크는 반드시 필요한 경우에만 사용해야 합니다.

[in] samDesired

열 키에 대한 원하는 액세스 권한을 지정하는 마스크입니다. 키의 보안 설명자가 호출 프로세스에 대해 요청된 액세스를 허용하지 않으면 함수가 실패합니다. 자세한 내용은 레지스트리 키 보안 및 액세스 권한을 참조하세요.

[out] phkResult

열린 키에 대한 핸들을 수신하는 변수에 대한 포인터입니다. 키가 미리 정의된 레지스트리 키 중 하나가 아닌 경우 핸들 사용을 마친 후 RegCloseKey 함수를 호출합니다.

반환 값

함수가 성공하면 반환 값이 ERROR_SUCCESS.

함수가 실패하면 반환 값은 Winerror.h에 정의된 0이 아닌 오류 코드입니다. FormatMessage 함수를 FORMAT_MESSAGE_FROM_SYSTEM 플래그와 함께 사용하여 오류에 대한 일반적인 설명을 가져올 수 있습니다.

참고

레거시 버전의 Windows에서도 이 API는 kernel32.dll 의해 노출됩니다.

설명

RegCreateKeyEx 함수와 달리 레지스트리에 키가 없는 경우 RegOpenKeyEx 함수는 지정된 키를 만들지 않습니다.

특정 레지스트리 작업은 키에 대한 핸들을 가져올 때 지정된 액세스 마스크가 아니라 키의 보안 설명자에 대한 액세스 검사를 수행합니다. 예를 들어 KEY_READ samDesired 를 사용하여 키를 열더라도 키의 보안 설명자가 허용하는 경우 레지스트리 키를 만드는 데 사용할 수 있습니다. 반면 RegSetValueEx 함수는 특히 KEY_SET_VALUE 액세스 권한으로 키를 열어야 합니다.

서비스 또는 애플리케이션이 다른 사용자를 가장하는 경우 HKEY_CURRENT_USER 이 함수를 사용하지 마세요. 대신 RegOpenCurrentUser 함수를 호출합니다.

특정 레지스트리 키에 액세스하는 작업은 리디렉션됩니다. 자세한 내용은 레지스트리 가상화 및 레지스트리의 32비트 및 64비트 애플리케이션 데이터를 참조하세요.

예제

lResult = RegOpenKeyEx (hKeyRoot, lpSubKey, 0, KEY_READ, &hKey);

if (lResult != ERROR_SUCCESS) 
{
    if (lResult == ERROR_FILE_NOT_FOUND) {
        printf("Key not found.\n");
        return TRUE;
    } 
    else {
        printf("Error opening key.\n");
        return FALSE;
    }
}

컨텍스트에서 이 예제를 보려면 하위 키를 사용하여 키 삭제를 참조하세요.

참고

winreg.h 헤더는 REgOpenKeyEx를 유니코드 전처리기 상수의 정의에 따라 이 함수의 ANSI 또는 유니코드 버전을 자동으로 선택하는 별칭으로 정의합니다. 인코딩 중립 별칭을 인코딩 중립이 아닌 코드와 혼합하면 컴파일 또는 런타임 오류가 발생하는 불일치가 발생할 수 있습니다. 자세한 내용은 함수 프로토타입에 대한 규칙을 참조하세요.

요구 사항

요구 사항
지원되는 최소 클라이언트 Windows 2000 Professional[데스크톱 앱만]
지원되는 최소 서버 Windows 2000 Server[데스크톱 앱만]
대상 플랫폼 Windows
헤더 winreg.h(Windows.h 포함)
라이브러리 Advapi32.lib
DLL Advapi32.dll

추가 정보

RegCloseKey

RegCreateKeyEx

RegDeleteKey

RegOpenKeyTransacted

레지스트리 함수

레지스트리 개요