- Windows Registry
> Ini 파일 시스템
64K를 초과할 수 없음
win.ini와 system.ini에 엔트리 추가시 파일 크기가 빠르게 증가
윈도우가 아이템을 순차 검색과 같은 직선적 탐색 수행 => 크기가 큰 Ini 파일 엑세스시 느려질 수 있음
쉽게 보호할 수 없고 네트워크를 통해서 원격 관리도 불가능
데이터 형식이 없음 => 문자열로 저장해야하고 프로그래머는 형변환 시켜야 함
서버 개발에서는 관리하기 편하다는 이유로 사용하는 경우도 있음
> 설정 파일 시스템이 레지스트리로 변경
계층구조
키에 엑세스하고 값을 구함
키는 값뿐만 아니라 서브키를 가짐
파일 시스템과 매우 유사
- 레지스트리 자료형
REG_BINARY |
바이너리 데이터 |
REG_DWORD |
32비트 수 |
REG_DWORD_LITTLE_ENDIAN |
리틀 엔디안 32비트 수 |
REG_DWORD_BIG_ENDIAN |
빅 엔디안 32비트 수 |
REG_EXPAND_SZ |
환경 변수에 대한 확장되지 않은 참조를 포함하고 있는 NULL 종료 문자열 |
REG_LINK |
Unicode 기호 링크 |
REG_MULTI_SZ |
두 개의 NULL 문자로 끝나는, NULL 종료 문자열 |
REG_NONE |
정의된 값이 없는 형식 |
REG_RESOURCE_LIST |
디바이스 드라이버 리소스 리스트 |
REG_SZ |
NULL 종료 문자열 |
- 레지스트리 함수 ( 성공 : ERROR_SUCCESS )
#include <windows.h>
LONG RegOpenKey(
HKEY hKey, // 사용할 대표 KEY (HKEY_CLASSES_ROOT, HKEY_CURRENT_CONFIG
, HKEY_CURRENT_USER, HKEY_LOCAL_MACHINE, HKEY_USERS)
LPCTSTR lpsubKey, // hKey 이후 레지스트리 경로
PHKEY phkResult //성공적으로 레지스트리 열었을 때 전체 경로
);
> 사용할 레지스트리 오픈
LONG RegCloseKey(HKEY hKey);
> 오픈 했던 레지스트리 키를 닫을 때 사용, RegOpenKey()의 phkResult를 hKey에 입력하면 됨
LONG RegCreateKey(HKEY hKey, LPCSTR lpSubKey, phkResult);
> 새로운 키 생성
LONG RegDeleteKey(HKEY hKey, LPCSTR lpSubKey);
> 키 삭제
LONG RegSetValueEx(
HKEY hKey,
LPCTSTR lpvalueName, // 사용할 값의 이름
DWORD Reserved, // 예약된 값으로 0을 입력하면 됨
DWORD dwType, // 레지스트리에 입력될 수 있는 타입
(REG_SZ, REG_MULTI_SZ, REG_DWORD)
const BYTE* lpData, // 값에 입력될 데이터
DWORD cbData // 값에 입력될 데이터의 길이
);
> 해당키에 값 지정
LONG RegQueryvalueEx(
HKEY hKey,
LPCTSTR lpvalueName, // 사용할 값의 이름
LPWORD lpreserved, // 예약된 값으로 0을 입력하면 됨
LPWORD lpType, // 가져온 값의 자료형
LPBYTE lpData, // 가져온 데이터
LPDWORD lpcbData // 가져온 데이터의 길이
);
> 해당키에 지정된 값을 가져올 때 사용
LONG RegDeleteValue(
HKEY hKey,
LPCTSTR lpValueName // 삭제할 값의 이름
);
> 키에 속해있는 값을 삭제할 때 사용
'programing > C++' 카테고리의 다른 글
임시객체 (0) | 2016.08.02 |
---|---|
INI 파일 함수 (0) | 2015.06.09 |
형 변환 (type cast) (0) | 2015.06.09 |
함수 객체 (0) | 2015.06.08 |
함수 포인터 (0) | 2015.06.08 |