다음을 통해 공유


RegCreateKeyExA 함수(winreg.h)

지정된 레지스트리 키를 만듭니다. 키가 이미 있는 경우 함수가 키를 엽니다. 키 이름은 대/소문자를 구분하지 않습니다.

키에 대해 트랜잭션된 레지스트리 작업을 수행하려면 RegCreateKeyTransacted 함수를 호출합니다.

시스템 파일 및 레지스트리 하이브를 포함하여 시스템 상태를 백업하거나 복원하는 애플리케이션은 레지스트리 함수 대신 볼륨 섀도 복사본 서비스 사용해야 합니다.

통사론

LSTATUS RegCreateKeyExA(
  [in]            HKEY                        hKey,
  [in]            LPCSTR                      lpSubKey,
                  DWORD                       Reserved,
  [in, optional]  LPSTR                       lpClass,
  [in]            DWORD                       dwOptions,
  [in]            REGSAM                      samDesired,
  [in, optional]  const LPSECURITY_ATTRIBUTES lpSecurityAttributes,
  [out]           PHKEY                       phkResult,
  [out, optional] LPDWORD                     lpdwDisposition
);

매개 변수

[in] hKey

열린 레지스트리 키에 대한 핸들입니다. 호출 프로세스에는 키에 대한 KEY_CREATE_SUB_KEY 액세스 권한이 있어야 합니다. 자세한 내용은 레지스트리 키 보안 및 액세스 권한참조하세요.

키 만들기에 대한 액세스는 핸들을 가져올 때 지정된 액세스 마스크가 아니라 레지스트리 키의 보안 설명자에 대해 확인됩니다. 따라서 hKeysamDesired KEY_READ 열어도 보안 설명자가 허용하는 경우 레지스트리를 수정하는 작업에 사용할 수 있습니다.

이 핸들은 RegCreateKeyEx 또는 RegOpenKeyEx 함수에서 반환되거나 다음 미리 정의된 키중 하나일 수 있습니다.

HKEY_CLASSES_ROOT
HKEY_CURRENT_CONFIG
HKEY_CURRENT_USER
HKEY_LOCAL_MACHINE
HKEY_USERS

[in] lpSubKey

이 함수가 열거나 만드는 하위 키의 이름입니다. 지정된 하위 키는 hKey 매개 변수로 식별되는 키의 하위 키여야 합니다. 레지스트리 트리의 깊이는 최대 32개 수준일 수 있습니다. 키 이름에 대한 자세한 내용은 레지스트리구조를 참조하세요.

lpSubKey 빈 문자열에 대한 포인터인 경우 phkResulthKey지정된 키에 대한 새 핸들을 받습니다.

이 매개 변수는 NULL수 없습니다.

Reserved

이 매개 변수는 예약되어 있으며 0이어야 합니다.

[in, optional] lpClass

이 키의 사용자 정의 클래스 형식입니다. 이 매개 변수는 무시될 수 있습니다. 이 매개 변수는 NULL수 있습니다.

[in] dwOptions

이 매개 변수는 다음 값 중 하나일 수 있습니다.

의미
REG_OPTION_BACKUP_RESTORE
0x00000004L
이 플래그가 설정되면 함수는 samDesired 매개 변수 무시하고 키를 백업하거나 복원하는 데 필요한 액세스 권한으로 키를 열려고 시도합니다. 호출 스레드에 SE_BACKUP_NAME 권한이 설정된 경우 키는 ACCESS_SYSTEM_SECURITY KEY_READ 액세스 권한으로 열립니다. 호출 스레드가 Windows Vista부터 SE_RESTORE_NAME 권한을 사용하도록 설정된 경우 키는 ACCESS_SYSTEM_SECURITY, DELETE 및 KEY_WRITE 액세스 권한으로 열립니다. 두 권한을 모두 사용하도록 설정하면 키에는 두 권한에 대한 결합된 액세스 권한이 있습니다. 자세한 내용은 특수 권한실행을 참조하세요.
REG_OPTION_CREATE_LINK
0x00000002L
참고 레지스트리 기호 링크는 반드시 필요한 경우에만 애플리케이션 호환성을 위해 사용해야 .
 
이 키는 기호 링크입니다. 대상 경로는 키의 L"SymbolicLinkValue" 값에 할당됩니다. 대상 경로는 절대 레지스트리 경로여야 합니다.
REG_OPTION_NON_VOLATILE
0x00000000L
이 키는 휘발성이 아닙니다. 기본값입니다. 정보는 파일에 저장되며 시스템을 다시 시작할 때 유지됩니다. RegSaveKey 함수는 휘발성이 아닌 키를 저장합니다.
REG_OPTION_VOLATILE
0x00000001L
함수에서 만든 모든 키는 휘발성입니다. 정보는 메모리에 저장되며 해당 레지스트리 하이브를 언로드할 때 유지되지 않습니다. HKEY_LOCAL_MACHINE경우 시스템에서 전체 종료를 시작할 때만 발생합니다. RegLoadKey 함수에 의해 로드된 레지스트리 키의 경우 해당 RegUnLoadKey 수행될 때 발생합니다. RegSaveKey 함수는 휘발성 키를 저장하지 않습니다. 이 플래그는 이미 존재하는 키에 대해 무시됩니다.
참고 사용자가 선택한 종료 시 빠른 시작 종료가 시스템의 기본 동작입니다.
 

[in] samDesired

만들 키에 대한 액세스 권한을 지정하는 마스크입니다. 자세한 내용은 레지스트리 키 보안 및 액세스 권한참조하세요.

[in, optional] lpSecurityAttributes

반환된 핸들을 자식 프로세스에서 상속할 수 있는지 여부를 결정하는 SECURITY_ATTRIBUTES 구조체에 대한 포인터입니다. lpSecurityAttributes NULL경우 핸들을 상속할 수 없습니다.

구조체의 lpSecurityDescriptor 멤버는 새 키에 대한 보안 설명자를 지정합니다. lpSecurityAttributes NULL경우 키는 기본 보안 설명자를 가져옵니다. 키에 대한 기본 보안 설명자의 ACL은 직접 부모 키에서 상속됩니다.

[out] phkResult

열려 있거나 만든 키에 대한 핸들을 받는 변수에 대한 포인터입니다. 키가 미리 정의된 레지스트리 키 중 하나가 아닌 경우 핸들 사용을 마친 후 RegCloseKey 함수를 호출합니다.

[out, optional] lpdwDisposition

다음 처리 값 중 하나를 수신하는 변수에 대한 포인터입니다.

의미
REG_CREATED_NEW_KEY
0x00000001L
키가 존재하지 않고 생성되었습니다.
REG_OPENED_EXISTING_KEY
0x00000002L
키가 존재했고 변경되지 않고 단순히 열렸습니다.
 

lpdwDisposition NULL경우 처리 정보가 반환되지 않습니다.

반환 값

함수가 성공하면 반환 값이 ERROR_SUCCESS.

함수가 실패하면 반환 값은 Winerror.h에 정의된 0이 아닌 오류 코드입니다. FormatMessage 함수를 FORMAT_MESSAGE_FROM_SYSTEM 플래그와 함께 사용하여 오류에 대한 일반적인 설명을 가져올 수 있습니다.

발언

RegCreateKeyEx 함수가 만드는 키에는 값이 없습니다. 애플리케이션은 RegSetValueEx 함수를 사용하여 키 값을 설정할 수 있습니다.

RegCreateKeyEx 함수는 지정된 경로에 누락된 키를 모두 만듭니다. 애플리케이션은 이 동작을 활용하여 한 번에 여러 키를 만들 수 있습니다. 예를 들어 애플리케이션은 lpSubKey 매개 변수에 대해 다음 형식의 문자열을 지정하여 위의 세 하위 키와 동시에 하위 키 4개의 수준을 만들 수 있습니다.

subkey1\subkey2\subkey3\subkey4

이 동작은 경로의 기존 키 철자가 잘못된 경우 원치 않는 키를 생성합니다.

애플리케이션은 HKEY_USERS 또는 HKEY_LOCAL_MACHINE직접 자식인 키를 만들 수 없습니다. 애플리케이션은 HKEY_USERS 또는 HKEY_LOCAL_MACHINE 트리의 하위 수준에서 하위 키를 만들 수 있습니다.

서비스 또는 애플리케이션이 다른 사용자를 가장하는 경우 HKEY_CURRENT_USER이 함수를 사용하지 마세요. 대신 RegOpenCurrentUser 함수를 호출합니다.

특정 레지스트리 키에 액세스하는 작업은 리디렉션됩니다. 자세한 내용은 레지스트리레지스트리 가상화32비트 및 64비트 애플리케이션 데이터를 참조하세요.

메모

winreg.h 헤더는 REgCreateKeyEx를 유니코드 전처리기 상수의 정의에 따라 이 함수의 ANSI 또는 유니코드 버전을 자동으로 선택하는 별칭으로 정의합니다. 인코딩 중립 별칭을 인코딩 중립이 아닌 코드와 혼합하면 컴파일 또는 런타임 오류가 발생하는 불일치가 발생할 수 있습니다. 자세한 내용은 함수 프로토타입대한 규칙을 참조하세요.

요구 사항

요구
지원되는 최소 클라이언트 Windows 2000 Professional [데스크톱 앱만 해당]
지원되는 최소 서버 Windows 2000 Server [데스크톱 앱만 해당]
대상 플랫폼 Windows
헤더 winreg.h(Windows.h 포함)
라이브러리 Advapi32.lib
DLL Advapi32.dll

참고 항목

RegCloseKey

RegDeleteKey

RegOpenKeyEx

RegSaveKey

레지스트리 함수

레지스트리 개요

SECURITY_ATTRIBUTES