본문 바로가기

Application Programming Interface/Windows API

기능별로 묶어보는 레지스트리 함수 – 5편. 값의 조회/추가/수정/삭제

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

기능별로 묶어보는 레지스트리 함수.
5편. 값의 조회/추가/수정/삭제

- by Tapitolife


기본 값을 다뤄 보았다면 이제 이름을 갖는 다양한 형식의 값을 다뤄봅니다.

— RegEnumValue
지정한 키가 가지고 있는 모든 값의 이름들을 가져옵니다.

LONG WINAPI RegEnumValue(
__in HKEY hKey,
__in DWORD dwIndex,
__out LPTSTR lpValueName,
__inout LPDWORD lpcchValueName,
__reserved LPDWORD lpReserved,
__out_opt LPDWORD lpType,
__out_opt LPBYTE lpData,
__inout_opt LPDWORD lpcbData
);

hKey: 값들의 이름을 조회할 키 자체에 대한 핸들입니다.

dwIndex: 0부터 1씩 증가하는 인덱스입니다.

lpValueName: 값의 이름을 담아 올 문자열 버퍼입니다.

lpcchValueName: 버퍼 lpValueName의 크기가 입력됩니다. (단위: 글자)

lpReserved: 항상 NULL입니다.

lpType: 형식을 담아 올 버퍼입니다. 값의 형식은 필요 없다면 NULL입니다.

lpData: 값을 담아 올 버퍼입니다. 값이 필요 없다면 NULL입니다.

lpcbData: 값의 크기가 내보내기 됩니다. 문자열 형식이라면 단위는 글자가 되고, 그 외에는 바이트가 됩니다.

— RegGetValue
지정된 이름을 갖는 값을 가져옵니다.

LONG WINAPI RegGetValue(
__in HKEY hKey,
__in_opt LPCTSTR lpSubKey,
__in_opt LPCTSTR lpValue,
__in_opt DWORD dwFlags,
__out_opt LPDWORD pdwType,
__out_opt PVOID pvData,
__inout_opt LPDWORD pcbData
);

hKey: 값을 가져올 키 자체, 또는 그 키의 상위 키에 대한 핸들입니다.

lpSubKey: hKey에 상위 키를 지정했다면, 여기에는 처리할 서브키의 이름을 명시합니다.

lpValue: 값의 이름입니다.

dwFlags: 가져오기 옵션입니다. 주로 가져올 값의 형식을 제한하는 조건을 부여하는데,
이에 부합되지 않을 경우 에러를 반환합니다. 옵션을 아래 표의 상수 중에 선택합니다.

이름

설명

RRF_RT_ANY

0x0000FFFF

아무 제한이 없습니다.

RRF_RT_DWORD

0x00000018

가져올 값을 32비트 정수로 제한합니다.

RRF_RT_QWORD

0x00000048

가져올 값을 64비트 정수로 제한합니다.

RRF_RT_REG_BINARY

0x00000008

가져올 값을 REG_BINARY로 제한합니다.

RRF_RT_REG_DWORD

0x00000010

가져올 값을 REG_DWORD로 제한합니다.

RRF_RT_REG_EXPAND_SZ

0x00000004

가져올 값을 REG_EXPAND_SZ로 제한합니다.

RRF_RT_REG_MULTI_SZ

0x00000020

가져올 값을 REG_MULTI_SZ로 제한합니다.

RRF_RT_REG_NONE

0x00000001

가져올 값을 REG_NONE으로 제한합니다.

RRF_RT_REG_QWORD

0x00000040

가져올 값을 REG_QWORD로 제한합니다.

RRF_RT_REG_SZ

0x00000002

가져올 값을 REG_SZ로 제한합니다.

이 상수와 더불어 다음 상수를 논리 합하여 지정할 수 있습니다.

이름

설명

RRF_NOEXPAND

0x10000000

형식이 REG_EXPAND_SZ일 때 자동 확장하지 않습니다.

RRF_ZEROONFAILURE

0x20000000

가져오기에 실패했고, pvData 버퍼가 NULL이 아닐 때,
pvData 버퍼의 내용을 0으로 모두 초기화합니다.

 

— RegSetValueEx
지정된 이름을 갖는 값을 설정합니다. 없으면 새로 만듭니다.

LONG WINAPI RegSetValueEx(
__in HKEY hKey,
__in_opt LPCTSTR lpValueName,
__reserved DWORD Reserved,
__in DWORD dwType,
__in_opt const BYTE *lpData,
__in DWORD cbData
);

hKey: 다룰 키에 대한 핸들입니다.

lpValueName: 다룰 값의 이름입니다.

Reserved: 그냥 0을 입력합니다.

dwType: 값의 형식을 지정합니다.

lpData: 레지스트리에 저장할 값입니다.

cbData: 바이트 단위의 값의 크기(문자열인 경우 NULL까지 포함해서)입니다.

— RegDeleteValue

지정된 이름을 갖는 값을 제거합니다.

LONG WINAPI RegDeleteValue(
__in HKEY hKey,
__in_opt LPCTSTR lpValueName
);

hKey: 다룰 키에 대한 핸들입니다.

lpValueName: 제거할 값의 이름입니다.