본문 바로가기

Application Programming Interface/Windows API

기능별로 묶어보는 레지스트리 함수 – 2편. 키의 열기/닫기

336x280(권장), 300x250(권장), 250x250, 200x200 크기의 광고 코드만 넣을 수 있습니다.

기능별로 묶어보는 레지스트리 함수.
2편. 키의 열기/닫기

- by Tapitolife


(이 포스팅은 다음과 같은 사이트를 참고하여 작성되었습니다.)
MSDN Registry Functions (Windows):
http://msdn.microsoft.com/en-us/library/ms724875(v=VS.85).aspx

 

아래 함수는 키의 열고 닫기를 수행하는 기본적인 함수입니다.
파일을 다루기 위해서는 스트림을 통해 특정 파일을 열고, 작업하고, 닫는 것처럼
레지스트리도 '키'의 단위로 열고, 작업하고, 닫는 순서로 다뤄주시면 되겠습니다.

 

— RegOpenKey

지정한 위치의 키를 엽니다.

LONG WINAPI RegOpenKey(
__in HKEY hKey,
__in_opt LPCTSTR lpSubKey,
__out PHKEY phkResult
);

hKey: 열고 싶은 키가 속해 있는 기본 키를 지정합니다.
기본 키란, 이전 편에서 설명한 5가지 기본 키
(HKEY_CLASS_ROOT, HKEY_LOCAL_MACHINE, HKEY_CURRENT_USER, HKEY_USERS,
그리고 HKEY_CURRENT_CONFIG)를 의미하고요,
이 5가지 키는 헤더 파일에 전역변수로서 미리 선언되어 있기 때문에
그대로 갖다 쓰시면 되겠습니다.

lpSubKey: 기본 키 이하 나머지 경로를 지정합니다. 문자열로 지정하시되
타입이 LPCTSTR로 선언되어 있으므로 TEXT("") 매크로로 한번 감싸 주셔야 됩니다.

phkResult: 열린 키에 대한 핸들이 이 곳을 통해 전달됩니다.

▶ 반환: 성공하면 ERROR_SUCCESS 매크로 상수를 반환합니다.
만일 그렇지 않다면 다른 상수를 반환하는데 이는 모두 winerror.h에 선언되어 있습니다.

사용법:
"HKLM\Software" 키를 열고 싶다면?

HKEY hKey;
RegOpenKey(HKEY_LOCAL_MACHINE, TEXT("Software"), &hKey);

 "HKLM\HARDWARE\ACPI\FACS" 키를 열고 싶다면?

HKEY hKey;
RegOpenKey(HKEY_LOCAL_MACHINE, TEXT("HARDWARE\\ACPI\\FACS"), &hKey);

 

— RegCloseKey

열어놓은 키 핸들을 닫습니다.

LONG WINAPI RegCloseKey(
__in HKEY hKey
);

phkResult: 닫을 키 핸들입니다.

사용법:

HKEY hKey;
RegOpenKey(HKEY_LOCAL_MACHINE, TEXT("Software"), &hKey);
RegCloseKey(hKey);

 

이 2개의 함수로 다음과 같은 예제를 실행해 볼 수 있습니다.

파일명: regtest1.c

#include <windows.h>
#include <stdio.h>
#include <conio.h>

int
main()
{
    HKEY hKey;
    LONG result;

    printf(
"HKLM\\System\\Setup을 엽니다.\n");
    result = RegOpenKey(HKEY_LOCAL_MACHINE, TEXT("System\\Setup"), &hKey);

    if(result == ERROR_SUCCESS) printf("열기 성공!\n");
    else printf("열기 실 패.\n");

    printf("연 키를 닫습니다.\n");
    RegCloseKey(hKey);

    printf("끝.\n");
    getch();

    return 0;
}

 

실행 결과: (컴퓨터마다 결과는 다르게 나올 수 있습니다.)