본문 바로가기
프로그래밍/Windows API

레지스터 관련 - RegOpenKeyEx 함수

by 호군 2010. 10. 27.
반응형
RegOpenKeyEx
  - 지정된 레지스트리 키를 open합니다.

LONG WINAPI RegOpenKeyEx(
  __in        HKEY hKey,
  __in_opt    LPCTSTR lpSubKey,
  __reserved  DWORD ulOptions,
  __in        REGSAM samDesired,
  __out       PHKEY phkResult
);


Parameters

hKey
오픈할 레지스트리 키의 핸들. RegCreateKeyEx 또는 RegOpenKeyEx 로 획득한 핸들이나
기본적으로 정의되어 있는 키의 핸들(predefined keys)을 사용합니다.      
HKEY_CLASSES_ROOT
HKEY_CURRENT_USER
HKEY_LOCAL_MACHINE
HKEY_USERS
lpSubKey

hKey이하의 서브키 ( 필수는 아님 )
NULL을 주는 경우 hKey값만을 사용하여 레지스트리 키를 오픈합니다.

ulOptions

현재는 사용하지 않습니다. 미래를 위해 예약된 인자입니다. 반드시 0 을 주어야 합니다.

samDesired

오픈할 키의 제어권한의 정도를 지정합니다.
만약 함수가 실패하는경우, 낮은 권한을 가진 사용자가 높을권한을 요구하는 제어권한으로 키를 오픈하는것이 원인이 될 수 있습니다.
여러가지 옵션값이 있으니 자세한 내용은 링크를 참조하세요
Registry Key Security and Access Rights.
그냥 귀찮으시면 KEY_ALL_ACCESS 로 주시면 됩니다. 모든 권한을 획득합니다.

phkResult

오픈된 키의 핸들
만약 키가 predefined registry keys( 기본적으로 지정되어 있는 키들)이 아니면
RegCloseKey 함수를
호출하여 오픈된 키를 종료시켜줘야 합니다.

Return Value

성공시 ERROR_SUCCESS 를 리턴합니다.

그리고 실패시에는 0 이 아닌값을 리턴하는데 에러코드는 Winerror.h 에 정의 되어 있습니다.


요구사항

Client Requires Windows Vista, Windows XP, or Windows 2000 Professional.
Server Requires Windows Server 2008, Windows Server 2003, or Windows 2000 Server.
Header

Declared in Winreg.h; include Windows.h.

Library

Use Advapi32.lib.

DLL

Requires Advapi32.dll.

Unicode

Implemented as RegOpenKeyExW (Unicode) and RegOpenKeyExA (ANSI).



간단한 사용예 )
HKLM( HKEY_LOCAL_MACHINE ) 이하에 Software\Adobe 키를 오픈하고 싶다면..
사용자 삽입 이미지


#include <windows.h>

void main()
{
     HKEY key;
     if(RegOpenKeyEx(HKEY_LOCAL_MACHINE, "Software\\Adobe", 0, KEY_ALL_ACCESS, &key)
        == ERROR_SUCCESS)
      {
             // 키를 오픈하는데 성공했습니다.
             // 이제 이 키를 이용해 레지스트리를 마음대로 ...
      }
      else
      {
             // 키 오픈에 실패했네요....
      }
}

출처 : http://smok95.tistory.com/
반응형