반응형
RegCreateKeyEx
레지스트리키를 새로 만들어주는 함수입니다. 만약 생성하려는 키가 존재하는 경우 해당 키를 오픈합니다.
LONG RegCreateKeyEx(
HKEY hKey,
LPCTSTR lpSubKey,
DWORD Reserved,
LPTSTR lpClass,
DWORD dwOptions,
REGSAM samDesired,
LPSECURITY_ATTRIBUTES lpSecurityAttributes,
PHKEY phkResult,
LPDWORD lpdwDisposition
);
HKEY hKey,
LPCTSTR lpSubKey,
DWORD Reserved,
LPTSTR lpClass,
DWORD dwOptions,
REGSAM samDesired,
LPSECURITY_ATTRIBUTES lpSecurityAttributes,
PHKEY phkResult,
LPDWORD lpdwDisposition
);
Parameters
- hKey
-
생성할 키의 루트키. 또는 RegCreateKeyEx 나 RegOpenKeyEx 로 반환된 키.
보통 아래의 루트키중 하나를 넣어줍니다.
HKEY_CLASSES_ROOT
HKEY_CURRENT_CONFIG
HKEY_CURRENT_USER
HKEY_LOCAL_MACHINE
HKEY_USERS
- lpSubKey
-
생성할 서브키(문자열)
키이름에 백슬래쉬( \ )는 사용해선 안됩니다.
- Reserved
- 예약된 인자. 반드시 0 을 주어야함.
- lpClass
- 키의 지정된 클래스명(문자열) (정확한 용도는 모르겠습니다.)
필수 아님 ( 보통 NULL을 줍니다. )
dwOptions- 아래의 옵션값을 사용합니다.
REG_OPTION_BACKUP_RESTORE ( 0x00000004L )
: 이 옵션을 사용하면 samDesired는 무시됩니다.
권한과 보안에 따라 키를 열고 백업 및 복구 등의 행동을 취하는 방법을 달리하는 것같습니다.
(잘모르겠음)
REG_OPEN_NON_VOLATILE ( 0x00000000L )
: 정보를 파일에 기록합니다. ( 보통 이 옵션을 사용 )
REG_OPTION_VOLATILE ( 0x00000001L )
: 정보를 메모리에 기록합니다. ( 시스템종료시 기록이 지워집니다. )
- samDesired
- 생성된 키에 주어지는 권한.
그냥 모든 권한을 줄때는 KEY_ALL_ACCESS 를 인자로 줍니다.
자세한 내용은 레지스트리 키 보안과 접근 권한을 참고하세요.
- lpSecurityAttributes
- SECURITY_ATTRIBUTES 구조체의 포인터. (필수 아님 , 보통 NULL을 준다.)
자식프로세스 상속과 관련된 내용같은데 잘 모르겠음.
- phkResult
- 생성된 키의 핸들포인터.
키가 루트키가 아닌경우에는 RegCloseKey를 사용하여 키를 해제해야 합니다.
- lpdwDisposition
- DWORD의 포인터, 생성된 키의 상태를 알려줍니다.
( 필수아님, 보통 NULL을 줍니다.)
반환되는 결과값은 아래와 같습니다.
REG_CREATED_NEW_KEY ( 0x00000001L )
: 새로 생성된 키
REG_OPENED_EXISTING_KEY ( 0x000000012 )
: 기존에 존재하던 키
Return Values
성공시 ERROR_SUCCESS 를 리턴합니다.
실패시는 0 이 아닌값을 리턴하고 해당 에러코드는 Winerror.h에 정의 되어 있습니다.
Requirements
Client | Requires Windows XP, Windows 2000 Professional, Windows NT Workstation, Windows Me, Windows 98, or Windows 95. |
---|---|
Server | Requires Windows Server 2003, Windows 2000 Server, or Windows NT Server. |
Header |
Declared in Winreg.h; include Windows.h. |
Library |
Link to Advapi32.lib. |
DLL | Requires Advapi32.dll. |
Unicode |
Implemented as RegCreateKeyExW (Unicode) and RegCreateKeyExA (ANSI). Note that Unicode support on Windows Me/98/95 requires Microsoft Layer for Unicode. |
Example Code
// HKLM/Software/Test/test 키를 생성하는 예제
// 새로 생성할 키의 핸들
HKEY newKey;
// RegCreateKeyEx 수행결과
LONG ret = 0;
ret = RegCreateKeyEx(HKEY_LOCAL_MACHINE,
"Software\\Test\\test",
0,
NULL,
REG_OPTION_NON_VOLATILE,
KEY_CREATE_SUB_KEY,
NULL,
&newKey,
NULL);
if(ret == ERROR_SUCCESS )
{
// 키생성 성공
}
else
{
// 키생성 실패
}
// 새로 생성할 키의 핸들
HKEY newKey;
// RegCreateKeyEx 수행결과
LONG ret = 0;
ret = RegCreateKeyEx(HKEY_LOCAL_MACHINE,
"Software\\Test\\test",
0,
NULL,
REG_OPTION_NON_VOLATILE,
KEY_CREATE_SUB_KEY,
NULL,
&newKey,
NULL);
if(ret == ERROR_SUCCESS )
{
// 키생성 성공
}
else
{
// 키생성 실패
}
출처 : http://smok95.tistory.com/
반응형
'프로그래밍 > Windows API' 카테고리의 다른 글
GetLastError() 함수로 얻는 애러코드 (0) | 2010.12.11 |
---|---|
동적 링크 라이브러리(DLL) 사용 / 만들기 #1 (0) | 2010.11.16 |
동적 링크 라이브러리(DLL) 사용 / 만들기 #2 (0) | 2010.11.12 |
MultiByteToWideChar와 WideCharToMultiByte 함수 (2) | 2010.11.09 |
INI 파일 제어 함수 (Get...Profile... / Write...Profile...) (0) | 2010.11.04 |
API 함수 레퍼런스 (0) | 2010.11.04 |
레지스터 관련 - RegSetValueEx 함수 (0) | 2010.10.27 |
레지스터 관련 - RegOpenKeyEx 함수 (0) | 2010.10.27 |
꼭 알아야 할 필수 API 함수 (0) | 2010.10.27 |
Windows 와 Linux Thread Control 함수 비교 (동기화 함수) (0) | 2010.10.27 |