'RegOpenKeyEx'에 해당되는 글 1건
- 2009.05.29 레지스트리(Registry)
2009. 5. 29. 15:43
레지스트리(Registry)
2009. 5. 29. 15:43 in Programmings/Windows Programming
프로그램은 실행중에 사용자가 입력한 옵션 설정이나 프로그램 스스로 만들어낸 정보들을 다음 실행을 위해서 저장을 해두어야 할 필요가 있다. 레지스트리(Registry)는 프로그램 실행중에 일어나는 상황이라든지 프로그램의 설정 정보를 저장하기 위해 사용된다. 저장의 대상은 사용자의 신상, 프로그램의 위치, 크기, 옵션, 설정 등의 프로그램 동작에 필요한 모든 정보가 될 수 있다.
이러한 레지스트리 설정을 통해 프로그램이 다음 실행시에도 이전의 상태 그대로를 유지 할 수 있는 것을 볼 수 있다.
등록된 레지스트리를 보거나 수정을 하려면 시작->실행에서 regedit를 입력후 엔터키를 치면 확인할 수 있다.
레지스트리를 다루는 데 주로 사용되는 함수들은 아래와 같다.
레지스트리 키를 생성하는 함수이다. 이미 키가 생성되어 있는 상태라면 해당 키를 열기만 한다. 이 함수의 인수는 9개로 많기는 하지만, 대부분의 인수는 디폴트로 적용된다.
RegCreateKeyEx ( HKEY_CURRENT_USER, "Software\\Wizntec\\RegiTest\\Position", 0, NULL,
REG_OPTION_NON_VOLATILE, KEY_ALL_ACCESS, NULL, &key, &dwDisp );
RegCreateKeyEx()에 의해 열려진 레지스트리 키는 아래의 RegSetValueEx()함수를 통해서 조작할 수 있다.
RegCreateKeyEx()에 의해 오픈된 레지스트리로부터 RegQueryValueEx()를 사용해서 값을 읽어올 수 있다.
RegOpenKeyEx() 함수는 레지스트리를 열기만 하는 함수이다. 보통 RegCreateKeyEx()를 주로 이용하여 잘 사용되지 않는 함수이다.
마지막으로 열려진 레지스트리 키를 닫는 함수이다.
레지스트리의 예제는 윈도우즈 API 정복을 참조했으며 아래 파일을 통해 테스트 하면 된다.
이러한 레지스트리 설정을 통해 프로그램이 다음 실행시에도 이전의 상태 그대로를 유지 할 수 있는 것을 볼 수 있다.
등록된 레지스트리를 보거나 수정을 하려면 시작->실행에서 regedit를 입력후 엔터키를 치면 확인할 수 있다.
레지스트리를 다루는 데 주로 사용되는 함수들은 아래와 같다.
레지스트리 키를 생성하는 함수이다. 이미 키가 생성되어 있는 상태라면 해당 키를 열기만 한다. 이 함수의 인수는 9개로 많기는 하지만, 대부분의 인수는 디폴트로 적용된다.
LONG RegCreateKeyEx(
HKEY hKey,
LPCTSTR LpSubKey,
DWORD Reserved,
LPTSTR lpClass,
DWORD dwOptions,
REGSAM samDesired,
LPSECURITU_ATTRIBUTES lpSecurityAttributes,
PHKEY phkResult,
LPDWORD lpdwDisposition
);
hKey - 새로 만들어지는 키의 부모키를 지정한다.
응용 프로그램들이 주로 사용하는 키는 HKEY_CURRENT_USER 키이고, 이 키 아래 Software 서브
키에 자신의 서브키를 생성하여 사용한다.
운영체제에 의해 사용할 수 있는 키는 아래와 같다.
HKEY_CLASSES_ROOT, HKEY_CURRENT_USER, HKEY_LOCAL_MACHINE, ....
lpSubKey - 만들고자(혹은 열고자) 하는 서브키를 지정하는 널을 포함하는 문자열로 반드시 지정해 주어야
한다.
Reserved - 예약..
lpClass - 생성되는 키의 클래스를 지정하는 문자열이다.
이미 존재하는 키를 오픈할 때 이 인수는 무시되고, 클래스를 지정하지 않을 때에는 NULL로 설정
한다.
dwOptions - 생성하는 키의 옵션을 지정한다.(키를 생성할 때만 적용된다.)
REG_OPTION_NON_VOLATILE
REG_OPTION_VOLATILE
REG_OPTION_BACKUP_RESTORE
samDesired - 새로 만들어지는 키의 보안 속성을 설정한다.
lpSecurityAttributes - 키값이 차일드 프로세스로도 상속 될 것인가를 지정하는 SECURITY_ATTRIBUTE
구조체의 포인터이다. NULL이면 상속되지 않는다.
phkResult - 만들어지거나 열려진 키값이 대입되는 변수의 포인터이다.
이 인수가 지정한 변수에 생성된(열린) 키값을 리턴한다. 리턴값은 HKEY형의 현수이다.
lpdwDisposition - 키가 새로 생성되었는지 기존의 키가 오픈 된것인지를 리턴받기 위한 출력용 변수이다.
REG_CREATED_NEW_KEY : 생성된 키,
REG_OPENED_EXISTING_KEY : 기존의 키가 오픈된 것
예)HKEY hKey,
LPCTSTR LpSubKey,
DWORD Reserved,
LPTSTR lpClass,
DWORD dwOptions,
REGSAM samDesired,
LPSECURITU_ATTRIBUTES lpSecurityAttributes,
PHKEY phkResult,
LPDWORD lpdwDisposition
);
hKey - 새로 만들어지는 키의 부모키를 지정한다.
응용 프로그램들이 주로 사용하는 키는 HKEY_CURRENT_USER 키이고, 이 키 아래 Software 서브
키에 자신의 서브키를 생성하여 사용한다.
운영체제에 의해 사용할 수 있는 키는 아래와 같다.
HKEY_CLASSES_ROOT, HKEY_CURRENT_USER, HKEY_LOCAL_MACHINE, ....
lpSubKey - 만들고자(혹은 열고자) 하는 서브키를 지정하는 널을 포함하는 문자열로 반드시 지정해 주어야
한다.
Reserved - 예약..
lpClass - 생성되는 키의 클래스를 지정하는 문자열이다.
이미 존재하는 키를 오픈할 때 이 인수는 무시되고, 클래스를 지정하지 않을 때에는 NULL로 설정
한다.
dwOptions - 생성하는 키의 옵션을 지정한다.(키를 생성할 때만 적용된다.)
REG_OPTION_NON_VOLATILE
REG_OPTION_VOLATILE
REG_OPTION_BACKUP_RESTORE
samDesired - 새로 만들어지는 키의 보안 속성을 설정한다.
lpSecurityAttributes - 키값이 차일드 프로세스로도 상속 될 것인가를 지정하는 SECURITY_ATTRIBUTE
구조체의 포인터이다. NULL이면 상속되지 않는다.
phkResult - 만들어지거나 열려진 키값이 대입되는 변수의 포인터이다.
이 인수가 지정한 변수에 생성된(열린) 키값을 리턴한다. 리턴값은 HKEY형의 현수이다.
lpdwDisposition - 키가 새로 생성되었는지 기존의 키가 오픈 된것인지를 리턴받기 위한 출력용 변수이다.
REG_CREATED_NEW_KEY : 생성된 키,
REG_OPENED_EXISTING_KEY : 기존의 키가 오픈된 것
RegCreateKeyEx ( HKEY_CURRENT_USER, "Software\\Wizntec\\RegiTest\\Position", 0, NULL,
REG_OPTION_NON_VOLATILE, KEY_ALL_ACCESS, NULL, &key, &dwDisp );
RegCreateKeyEx()에 의해 열려진 레지스트리 키는 아래의 RegSetValueEx()함수를 통해서 조작할 수 있다.
LONG RegSetValueEx( HKEY hKey,
LPCTSTR lpValueName,
DWORD Reserved,
DWORD dwType,
CONST BYTE *lpData,
DWORD cbData
);
hKey - 값을 저장하고자 하는 키 핸들
lpValueName - 값의 이름을 지정하는 문자열, 해당 키에 값이 없으면 새로 생성해서 데이터를 저장한다.
dwType - 값의 형(type), 대부분 정수형(REG_DWORD)과 문자열(REG_SZ)를 사용한다.
lpData - 저장하고자 하는 데이터의 포인터이다.
cbData - 데이터의 크기 값
LPCTSTR lpValueName,
DWORD Reserved,
DWORD dwType,
CONST BYTE *lpData,
DWORD cbData
);
hKey - 값을 저장하고자 하는 키 핸들
lpValueName - 값의 이름을 지정하는 문자열, 해당 키에 값이 없으면 새로 생성해서 데이터를 저장한다.
dwType - 값의 형(type), 대부분 정수형(REG_DWORD)과 문자열(REG_SZ)를 사용한다.
lpData - 저장하고자 하는 데이터의 포인터이다.
cbData - 데이터의 크기 값
RegCreateKeyEx()에 의해 오픈된 레지스트리로부터 RegQueryValueEx()를 사용해서 값을 읽어올 수 있다.
LONG RegQueryValueEx( HKEY hKey,
LPTSTR lpValueName,
LPDWORD lpReserved,
LPDWORD lpType,
LPBYTE lpData,
LPDWORD lpcbData
);
첫 번째 ~ 세 번째 인수는 이전과 동일.
lpType - 읽은 값의 타입을 대입받을 변수의 포인터
lpData - 읽혀진 값을 대입받을 변수의 번지
lpcbData - 이 변수의 크기값을 가지는 변수의 번지
LPTSTR lpValueName,
LPDWORD lpReserved,
LPDWORD lpType,
LPBYTE lpData,
LPDWORD lpcbData
);
첫 번째 ~ 세 번째 인수는 이전과 동일.
lpType - 읽은 값의 타입을 대입받을 변수의 포인터
lpData - 읽혀진 값을 대입받을 변수의 번지
lpcbData - 이 변수의 크기값을 가지는 변수의 번지
RegOpenKeyEx() 함수는 레지스트리를 열기만 하는 함수이다. 보통 RegCreateKeyEx()를 주로 이용하여 잘 사용되지 않는 함수이다.
LONG RegOpenKeyEx( HKEY hKey,
LPCTSTR lpSubKey,
DWORD ulOptions,
PHKEY phkResult
);
LPCTSTR lpSubKey,
DWORD ulOptions,
PHKEY phkResult
);
마지막으로 열려진 레지스트리 키를 닫는 함수이다.
LONG RegCloseKey( HKEY hKey );
레지스트리의 예제는 윈도우즈 API 정복을 참조했으며 아래 파일을 통해 테스트 하면 된다.
'Programmings > Windows Programming' 카테고리의 다른 글
WinIO (0) | 2009.06.23 |
---|---|
IME 입력모드 설정 (5) | 2009.05.29 |
다른 윈도우에서의 GetFocus() 사용하기 (0) | 2009.05.28 |
서브클래싱 (0) | 2009.05.26 |
GetWindowThreadProcessId() (0) | 2009.05.18 |