관리 메뉴

ㄴrㅎnㅂrㄹrㄱi

RegCreateKeyEx(A) 본문

API 관련/Win32 API 함수

RegCreateKeyEx(A)

님투 2007. 11. 8. 23:17
반응형

RegCreateKeyEx(A)

지정된 레지스트리 키를 작성합니다.지정된 레지스트리 키가 벌써 존재하고 있는 경우는, 키를 오픈합니다.

LONG RegCreateKeyExA(
    HKEY    hKey,             // 키의 핸들
    PCTSTR  pszSubKey,        // 서브 키의 이름
    DWORD   Reserved,         // 예약(0(을)를 지정)
    PTSTR   pszClass,         // 클래스명
    DWORD   dwOptions,        // 옵션
    REGSAM  samDesired,       // 시큐러티 액세스 마스크
    PSECURITY_ATTRIBUTES psa, // 시큐러티 속성
    PHKEY   phkResult,        // 핸들을 격납하는 변수
    PDWORD  pdwDisposition
);

ADVAPI32.DLL

인수

hKey

현재 오픈되고 있는 키의 핸들을 지정합니다.이 핸들은 KEY_CREATE_SUB_KEY 액세스를 가지고 있지 않으면 안됩니다.

다음의 정의가 끝난 키를 지정할 수도 있습니다.

정의가 끝난 키
0x80000000 HKEY_CLASSES_ROOT
0x80000001 HKEY_CURRENT_USER
0x80000002 HKEY_LOCAL_MACHINE
0x80000003 HKEY_USERS
0x80000004 Windows NT/2000/XP: HKEY_PERFORMANCE_DATA
0x80000005 HKEY_CURRENT_CONFIG
0x80000006 Windows 95/98/Me: HKEY_DYN_DATA

작성되는 키는 이 파라미터로 지정된 키의 서브 키가 됩니다.

pszSubKey

작성 또는 오픈하는 서브 키의 이름을 나타내는 문자열의 주소를 지정합니다. 0 (NULL) (을)를 지정할 수 없습니다.

Windows NT/2000/XP: 서브 키의 이름을 backslash 「\」(으)로 시작해는 안됩니다.이러한 이름을 지정했을 경우는, 함수는 161 (ERROR_BAD_PATHNAME) (을)를 돌려줍니다.

Windows 95/98/Me: 서브 키의 이름이 backslash 「\」(으)로 시작되어 있는 경우는, 선두의 backslash는 무시됩니다.

Reserved

예약되고 있습니다. 0 (을)를 지정하지 않으면 안됩니다.

pszClass

이 키의 클래스 (오브젝트의 종류) 의 이름을 나타내는 문자열의 주소를 지정합니다.키가 벌써 존재하는 경우는 무시됩니다.현재는 어떠한 클래스도 정의되어 있지 않기 때문에, 이 파라미터에는 0 (NULL) (을)를 지정해야 합니다.

Windows 95/98/Me: 이 파라미터는 리모트 레지스트리 키 에 대해서만 사용되어 로컬 레지스트리 키에서는 무시됩니다.

Windows NT/2000/XP: 이 파라미터는 리모트 레지스트리 키와 로컬 레지스트리 키의 양쪽 모두로 서포트됩니다.

dwOptions

키에 관한 특별한 옵션을 지정합니다.이하의 값의 어느쪽이든을 지정합니다.

의미
0x00000000(REG_OPTION_NON_VOLATILE)

이 키는 불휘발성입니다.정보는 디스크 파일에 보존되어 시스템을 재기동시 해도 정보는 없어지지 않습니다.

0x00000001 (REG_OPTION_VOLATILE)

Windows NT/2000/XP: 이 키는 휘발성입니다.정보는 메모리에 격납되어 디스크 파일에는 보존되지 않기 때문에, 시스템을 재기동하면 없어집니다.지정된 이름의 키가 벌써 존재하는 경우는, 이 플래그는 무시됩니다.

Windows 95/98/Me: 이 값은 무시됩니다.이 값이 지정되었을 경우는, 불휘발성의 키가 작성됩니다.

0x00000004 (REG_OPTION_BACKUP_RESTORE)

Windows NT/2000/XP: samDesired 파라미터의 액세스 지정을 무시하고, 키의 백업 또는 복원에 필요한 액세스 요구와 함께 키를 오픈합니다.호출측의 스렛드가 SE_BACKUP_NAME 특권을 가지고 있는 경우, 이 키는,ACCESS_SYSTEM_SECURITY 액세스와 KEY_READ 액세스로 오픈됩니다.호출측의 스렛드가 SE_RESTORE_NAME 특권을 가지고 있는 경우, 이 키는,ACCESS_SYSTEM_SECURITY 액세스와 KEY_WRITE 액세스로 오픈됩니다.양쪽 모두의 특권을 가지고 있는 경우, 양쪽 모두의 특권이 짜 합쳐집니다.

Windows 95/98/Me: 이 값은 무시됩니다.

samDesired

오픈하는 키의 핸들의 시큐러티 액세스권을 나타내는 액세스 마스크를 지정합니다.이하의 값의 편성으로 지정합니다.

의미
0x0001 (KEY_QUERY_VALUE)

서브 키 데이터의 문의를 허가합니다.

0x0002 (KEY_SET_VALUE)

서브 키 데이터의 설정을 허가합니다.

0x0004 (KEY_CREATE_SUB_KEY)

서브 키의 작성을 허가합니다.

0x0008 (KEY_ENUMERATE_SUB_KEYS)

서브 키의 열거를 허가합니다.

0x0010 (KEY_NOTIFY)

변경의 통지를 허가합니다.

0x0020 (KEY_CREATE_LINK)

기호 연결의 작성을 허가합니다.

0x0100 (KEY_WOW64_64KEY)

Windows XP: 64 비트 또는 32 비트 어플리케이션이, 64 비트 키를 오픈할 수 있도록 합니다.

0x0200 (KEY_WOW64_32KEY)

Windows XP: 64 비트 또는 32 비트 어플리케이션이, 32 비트 키를 오픈할 수 있도록 합니다.

0x20006 (KEY_WRITE)

STANDARD_RIGHTS_WRITE, KEY_SET_VALUE, KEY_CREATE_SUB_KEY 액세스의 편성입니다.

0x20019 (KEY_READ, KEY_EXECUTE)

STANDARD_RIGHTS_READ, KEY_QUERY_VALUE, KEY_ENUMERATE_SUB_KEYS, KEY_NOTIFY 액세스의 편성입니다.

0xF003F (KEY_ALL_ACCESS)

STANDARD_RIGHTS_REQUIRED, KEY_QUERY_VALUE, KEY_ENUMERATE_SUB_KEYS, KEY_NOTIFY, KEY_CREATE_SUB_KEY, KEY_CREATE_LINK, KEY_SET_VALUE 액세스의 편성입니다.

psa

취득한 핸들의 child process에의 계승을 허가할지를 결정하는, SECURITY_ATTRIBUTES 구조체에의 포인터를 지정합니다. 0 (NULL) (을)를 지정하면, 핸들은 계승되지 않습니다.

Windows 95/98/Me: 이 구조체의 lpSecurityDescriptor 멤버는, 새롭게 작성되는 키의 세큐리티데스크리프타를 지정합니다. psa 멤버에 0 (NULL) (을)를 지정했을 경우는, 디폴트의 세큐리티데스크리프타가 지정됩니다.

phkResult

작성 또는 오픈된 키의 핸들을 격납하기 위한 변수의 주소를 지정합니다.

이 변수에 돌려주어진 핸들이 필요없게 되면, RegCloseKey 함수를 호출해 핸들을 클로우즈 하지 않으면 안됩니다.

pdwDisposition

키가 새롭게 작성되었는지를 나타내는 값을 격납하는 변수의 주소를 지정합니다.이 변수에는 이하의 값중 한쪽이 격납됩니다.

의미
0x00000001 (KEY_QUERY_VALUE)

지정된 키가 존재하지 않았기 때문에, 키가 새롭게 작성된 것을 나타내 보입니다.

0x00000002 (REG_OPENED_EXISTING_KEY)

지정된 키가 이미 존재하고 있어, 그 키가 오픈 연을 나타내 보입니다.

이 파라미터에 0 (NULL) (을)를 지정했을 경우는, 이 정보는 돌려주어지지 않습니다.

반환값

성공하면 0 (ERROR_SUCCESS) 하지만 돌아갑니다.

실패하면 0 이외의 에러 코드가 돌아갑니다.이 에러 코드와 FORMAT_MESSAGE_FROM_SYSTEM 플래그를 지정해 FormatMessage 함수를 호출하는 것으로, 에러 메세지를 취득할 수 있습니다.

해설

작성된 키는 값을 가지지 않습니다.값을 설정하려면 , RegSetValueEx 함수를 사용합니다.

Windows 95/98/Me: 레지스트리의 서브 키나 값의 이름은, 255 문자를 넘을 수 없습니다.

대응 정보

Windows 95 이후 / Windows NT 3.1 이후

반응형

'API 관련 > Win32 API 함수' 카테고리의 다른 글

RegDeleteValue(A)  (0) 2007.11.08
RegDeleteKey(A)  (0) 2007.11.08
RegCloseKey  (0) 2007.11.08
ReadFile  (0) 2007.11.08
PostMessage(A)  (0) 2007.11.08
Comments