관리 메뉴

ㄴrㅎnㅂrㄹrㄱi

RegEnumKeyEx(A) 본문

API 관련/Win32 API 함수

RegEnumKeyEx(A)

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

RegEnumKeyEx(A)

지정된 레지스트리 키의 서브 키를 열거합니다.이 함수는, 불려 갈 때마다,1개의 서브 키에 관한 정보를 취득합니다.

LONG RegEnumKeyExA(
    HKEY      hKey,        // 키의 핸들
    DWORD     dwIndex,     // 서브 키의 인덱스
    PTSTR     pName,       // 서브 키명을 격납하는 버퍼
    PDWORD    pcbName,     // pName 의 사이즈를 넣은 변수
    PDWORD    pReserved,   // 예약(NULL(을)를 지정)
    PTSTR     pClass,      // 클래스명을 격납하는 버퍼
    PDWORD    pcbClass,    // pClass 의 사이즈를 넣은 변수
    PFILETIME pftLastWrite // 최종 기입 시간
);

ADVAPI32.DLL

인수

hKey

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

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

정의가 끝난 키
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
dwIndex

취득하는 서브 키의 0 (으)로부터 시작되는 인덱스를 지정합니다.

pName

서브 키의 이름을 격납하기 위한 버퍼의 주소를 지정합니다.이 함수는, 서브 키의 이름만을 카피합니다.계층 전체를 포함한 이름을 카피하는 것은 아닙니다.

pcbName

pName 파라미터로 나타내지는 버퍼의 아르바이트수(Unicode 판의 경우는 문자수) 단위의 사이즈를 격납한 변수의 주소를 지정합니다.함수가 제어를 돌려주면, pName 파라미터의 버퍼에 카피된 문자열의 아르바이트수(Unicode 판의 경우는 문자수)가 이 변수에 격납됩니다.

pReserved

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

pClass

서브 키의 클래스명을 격납하는 버퍼의 주소를 지정합니다.이 정보가 불요의 경우는 0 (NULL) (을)를 지정할 수 있습니다.현재는 어떠한 클래스도 정의되어 있지 않기 때문에, 어플리케이션은 이 파라미터를 무시해야 합니다.

pcbClass

pClass 파라미터로 나타내지는 버퍼의 아르바이트수(Unicode 판의 경우는 문자수) 단위의 사이즈를 격납한 변수의 주소를 지정합니다.함수가 제어를 돌려주면, pClass 파라미터의 버퍼에 카피된 사이즈가 이 변수에 격납됩니다. pClass 파라미터에 0 (NULL) (을)를 지정했을 경우는, 이 파라미터에 0 (NULL) (을)를 지정할 수 있습니다.

pftLastWrite

서브 키의 최종 기입 시간을 격납하기 위한 FILETIME 구조체의 주소를 지정합니다.

반환값

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

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

해설

서브 키를 열거하려면 , 우선 dwIndex 파라미터에 0 (을)를 지정하고 나서 RegEnumKeyEx 함수를 호출합니다.이후, dwIndex 파라미터를 인크리먼트(increment)(1두개가산) 하면서 RegEnumKeyEx 함수를 호출합니다.이 조작을, 모든 서브 키가 열거될 때까지(RegEnumKeyEx 함수가 반환값 259 (ERROR_NO_MORE_ITEMS) (을)를 돌려줄 때까지) 반복합니다.

반대로, 최초의 함수 호출시에 dwIndex 파라미터에 마지막 서브 키의 인덱스를 지정해, 인덱스가 0 (이)가 될 때까지 dwIndex 파라미터를 감소(1두개감산) 하면서 함수를 호출해 갈 수도 있습니다.이 때, 마지막 서브 키의 인덱스를 취득하려면 RegQueryInfoKey 함수를 사용합니다.

지정된 레지스트리 키가 가지는 서브 키로 가장 긴 서브 키의 이름이나 클래스의 이름의 길이를 취득하려면 RegQueryInfoKey 함수를 사용합니다.

대응 정보

Windows 95 이후 / Windows NT 3.1 이후

반응형

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

RegFlushKey  (0) 2007.11.08
RegEnumValue(A)  (0) 2007.11.08
RegDeleteValue(A)  (0) 2007.11.08
RegDeleteKey(A)  (0) 2007.11.08
RegCreateKeyEx(A)  (0) 2007.11.08
Comments