- 생성 또는 오픈 할 키의 루트(하이브)키, 또는 RegCreateKeyEx 나 RegOpenKeyEx로 반환된 키를 설정한다.
- 일반적으로 미리 정의되어 있는 루트(하이브)키 중 하나를 선택한다.
HKEY_CLASSES_ROOT : 파일 확장자 속성 및 COM 오브젝트 설정 정보이다.(원본 값은 HKEY_CURRNET_USER와 HKEY_LOCAL_MACHINE 하위 키 중 Software\Classes의 조합이다.)
HKEY_CURRENT_CONFIG : 현재 하드웨어 설정 상태이다.(원본 값은 HKEY_LOCAL_MACHINE\System\CurrentControlSet\Hardware Profiles\Current 이다.)
HKEY_CURRENT_USER : 현재 로그인 한 사용자 설정 정보, HKEY_USERS의 하위키이다.(원본은 HKEY_USERS의 SID이다.)
HKEY_LOCAL_MACHINE : 컴퓨터의 물리적 구성 정보 및 시스템 전반에 대한 정보이다.
HKEY_USERS : 새로운 사용자를 위한 디폴트 설정 정보 및 현재 사용자 정보이다.
lpSubKey
- 생성 또는 오픈 할 하위 키를 전달한다.
- 이 값은 NULL이 될 수 없다.
Reserved
- 예약 영역으로 항상 0을 전달한다.
lpClass
- 사용자 정의 클래스 유형을 설정한다.
- 일반적으로 NULL을 설정한다.
dwOptions
- 옵션들 중 하나를 설정한다.
- 일반적으로 REG_OPTOIN_NON_VOLATILE(값을 파일에 기록하여 재부팅 시 지워지지 않음)를 설정한다.
#define REG_OPTION_RESERVED (0x00000000L) // Parameter is reserved
#define REG_OPTION_NON_VOLATILE (0x00000000L) // Key is preserved
// when system is rebooted
#define REG_OPTION_VOLATILE (0x00000001L) // Key is not preserved
// when system is rebooted
#define REG_OPTION_CREATE_LINK (0x00000002L) // Created key is a
// symbolic link
#define REG_OPTION_BACKUP_RESTORE (0x00000004L) // open for backup or restore
// special access rules
// privilege required
#define REG_OPTION_OPEN_LINK (0x00000008L) // Open symbolic link
#define REG_LEGAL_OPTION \
(REG_OPTION_RESERVED |\
REG_OPTION_NON_VOLATILE |\
REG_OPTION_VOLATILE |\
REG_OPTION_CREATE_LINK |\
REG_OPTION_BACKUP_RESTORE |\
REG_OPTION_OPEN_LINK)
#define REG_OPEN_LEGAL_OPTION \
(REG_OPTION_RESERVED |\
REG_OPTION_BACKUP_RESTORE |\
REG_OPTION_OPEN_LINK)
- 출처 : WinNT.h
samDesired
- 키에 대한 접근 권한을 설정한다.
- 일반적으로 KEY_ALL_ACCESS 권한을 설정한다.
- 64bit 운영체제에서 32bit 프로그램으로 이 함수를 호출할 경우 KEY_WOW64_64KEY 권한을 추가한다.(정확히 얘기하면 64bit 운영체제에서 64bit 프로그램과 32bit 프로그램은 서로 다른 경로에 레지스트리가 저장 되는데 이러한 차이 때문에32bit 프로그램이 64bit 레지스트리에 접근 할 시에는 KEY_WOW64_64KEY 권한을 요청하여 제대로 된 접근이 가능하고 반대로 64bit 프로그램이 32bit 레지스트리에 접근 할 시에는 KEY_WOW64_32KEY권한을 요청하여 제대로 된 접근을 할 수 있다.)
#define KEY_QUERY_VALUE (0x0001)
#define KEY_SET_VALUE (0x0002)
#define KEY_CREATE_SUB_KEY (0x0004)
#define KEY_ENUMERATE_SUB_KEYS (0x0008)
#define KEY_NOTIFY (0x0010)
#define KEY_CREATE_LINK (0x0020)
#define KEY_WOW64_32KEY (0x0200)
#define KEY_WOW64_64KEY (0x0100)
#define KEY_WOW64_RES (0x0300)
#define KEY_READ ((STANDARD_RIGHTS_READ |\
KEY_QUERY_VALUE |\
KEY_ENUMERATE_SUB_KEYS |\
KEY_NOTIFY) \
& \
(~SYNCHRONIZE))
#define KEY_WRITE ((STANDARD_RIGHTS_WRITE |\
KEY_SET_VALUE |\
KEY_CREATE_SUB_KEY) \
& \
(~SYNCHRONIZE))
#define KEY_EXECUTE ((KEY_READ) \
& \
(~SYNCHRONIZE))
#define KEY_ALL_ACCESS ((STANDARD_RIGHTS_ALL |\
KEY_QUERY_VALUE |\
KEY_SET_VALUE |\
KEY_CREATE_SUB_KEY |\
KEY_ENUMERATE_SUB_KEYS |\
KEY_NOTIFY |\
KEY_CREATE_LINK) \
& \
(~SYNCHRONIZE))
- 출처 : WinNT.h
lpSecurityAttributes
- 반환된 핸들을 자식 프로세스에게 상속할지 여부를 결정하는 SECURITY_ATTRIBUTES 구조체 변수의 주소를 설정한다.