다음을 통해 공유


RegCreateKeyTransactedW 함수(winreg.h)

지정된 레지스트리 키를 만들어 트랜잭션에 연결합니다. 키가 이미 있는 경우 함수가 키를 엽니다. 키 이름은 대/소문자를 구분하지 않습니다.

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

통사론

LSTATUS RegCreateKeyTransactedW(
  [in]            HKEY                        hKey,
  [in]            LPCWSTR                     lpSubKey,
                  DWORD                       Reserved,
  [in, optional]  LPWSTR                      lpClass,
  [in]            DWORD                       dwOptions,
  [in]            REGSAM                      samDesired,
  [in, optional]  const LPSECURITY_ATTRIBUTES lpSecurityAttributes,
  [out]           PHKEY                       phkResult,
  [out, optional] LPDWORD                     lpdwDisposition,
  [in]            HANDLE                      hTransaction,
                  PVOID                       pExtendedParemeter
);

매개 변수

[in] hKey

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

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

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

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 액세스 권한으로 열립니다. 호출 스레드에 SE_RESTORE_NAME 권한이 활성화된 경우 키는 ACCESS_SYSTEM_SECURITY KEY_WRITE 액세스 권한으로 열립니다. 두 권한을 모두 사용하도록 설정하면 키에는 두 권한에 대한 결합된 액세스 권한이 있습니다. 자세한 내용은 특수 권한실행을 참조하세요.
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경우 처리 정보가 반환되지 않습니다.

[in] hTransaction

활성 트랜잭션에 대한 핸들입니다. 이 핸들은 CreateTransaction 함수에서 반환됩니다.

pExtendedParemeter

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

반환 값

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

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

발언

이 함수를 사용하여 키를 만들면 키에 대한 후속 작업이 트랜잭션됩니다. 트랜잭션이 커밋되기 전에 키에 대해 트랜잭션되지 않은 작업이 수행되면 트랜잭션이 롤백됩니다. 트랜잭션이 커밋되거나 롤백된 후에는 RegCreateKeyTransacted 사용하여 키를 다시 열거나 활성 트랜잭션 핸들을 사용하여 RegOpenKeyTransacted 추가 작업을 실행해야 합니다. 트랜잭션에 대한 자세한 내용은 커널 트랜잭션 관리자참조하세요.

이 키의 하위 키에 대한 후속 작업은 자동으로 트랜잭션되지 않습니다. 따라서 RegDeleteKeyEx 트랜잭션 삭제 작업을 수행하지 않습니다. 대신 RegDeleteKeyTransacted 함수를 사용하여 트랜잭션 삭제 작업을 수행합니다.

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

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

subkey1\subkey2\subkey3\subkey4

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

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

메모

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

요구 사항

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

참고 항목

RegCloseKey

RegDeleteKeyTransacted

regOpenKeyTransacted

RegSaveKey

레지스트리 함수

레지스트리 개요

SECURITY_ATTRIBUTES