Freigeben über


RegCreateKeyTransactedA-Funktion (winreg.h)

Erstellt den angegebenen Registrierungsschlüssel und ordnet ihn einer Transaktion zu. Wenn der Schlüssel bereits vorhanden ist, öffnet sie die Funktion. Beachten Sie, dass bei Schlüsselnamen die Groß-/Kleinschreibung nicht beachtet wird.

Anwendungen, die den Systemstatus sichern oder wiederherstellen, einschließlich Systemdateien und Registrierungsstruktur, sollten den Volume Shadow Copy Service anstelle der Registrierungsfunktionen verwenden.

Syntax

LSTATUS RegCreateKeyTransactedA(
  [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]            HANDLE                      hTransaction,
                  PVOID                       pExtendedParemeter
);

Parameter

[in] hKey

Ein Handle zu einem geöffneten Registrierungsschlüssel. Der Aufrufvorgang muss über KEY_CREATE_SUB_KEY Zugriff auf den Schlüssel verfügen. Weitere Informationen finden Sie unter Registry Key Security and Access Rights.

Der Zugriff auf die Schlüsselerstellung wird mit dem Sicherheitsdeskriptor des Registrierungsschlüssels überprüft, nicht mit der Zugriffsmaske, die beim Abrufen des Handles angegeben wurde. Selbst wenn hKey- mit einem samDesired von KEY_READ geöffnet wurde, kann es in Vorgängen verwendet werden, die Schlüssel erstellen, wenn dies durch den Sicherheitsdeskriptor zulässig ist.

Dieser Handle wird von der RegCreateKeyTransacted oder RegOpenKeyTransacted--Funktion zurückgegeben, oder es kann sich um einen der folgenden vordefinierten Schlüssel:

HKEY_CLASSES_ROOT
HKEY_CURRENT_CONFIG
HKEY_CURRENT_USER
HKEY_LOCAL_MACHINE
HKEY_USERS

[in] lpSubKey

Der Name eines Unterschlüssels, den diese Funktion öffnet oder erstellt. Der angegebene Unterschlüssel muss ein Unterschlüssel des schlüssels sein, der durch den hKey Parameter identifiziert wird; es kann bis zu 32 Ebenen tief in der Registrierungsstruktur sein. Weitere Informationen zu Schlüsselnamen finden Sie unter Struktur der Registrierungs-.

Wenn lpSubKey ein Zeiger auf eine leere Zeichenfolge ist, empfängt phkResult einen neuen Handle für den durch hKeyangegebenen Schlüssel.

Dieser Parameter kann nicht NULL-werden.

Reserved

Dieser Parameter ist reserviert und muss null sein.

[in, optional] lpClass

Die benutzerdefinierte Klasse dieses Schlüssels. Dieser Parameter kann ignoriert werden. Dieser Parameter kann NULL-sein.

[in] dwOptions

Dieser Parameter kann einer der folgenden Werte sein:

Wert Bedeutung
REG_OPTION_BACKUP_RESTORE
0x00000004L
Wenn dieses Flag festgelegt ist, ignoriert die Funktion den samDesired Parameter und versucht, den Schlüssel mit dem zugriff zu öffnen, der zum Sichern oder Wiederherstellen des Schlüssels erforderlich ist. Wenn der aufrufende Thread die SE_BACKUP_NAME Berechtigung aktiviert hat, wird der Schlüssel mit dem ACCESS_SYSTEM_SECURITY geöffnet und KEY_READ Zugriffsrechten. Wenn der aufrufende Thread die SE_RESTORE_NAME Berechtigung aktiviert hat, wird der Schlüssel mit dem ACCESS_SYSTEM_SECURITY und KEY_WRITE Zugriffsrechten geöffnet. Wenn beide Berechtigungen aktiviert sind, verfügt der Schlüssel über die kombinierten Zugriffsrechte für beide Berechtigungen. Weitere Informationen finden Sie unter Ausführen mit speziellen Rechten.
REG_OPTION_NON_VOLATILE
0x000000000L
Dieser Schlüssel ist nicht veränderlich; Dies ist die Standardeinstellung. Die Informationen werden in einer Datei gespeichert und bleiben erhalten, wenn das System neu gestartet wird. Die RegSaveKey--Funktion speichert Schlüssel, die nicht veränderlich sind.
REG_OPTION_VOLATILE
0x00000001L
Alle von der Funktion erstellten Schlüssel sind veränderlich. Die Informationen werden im Arbeitsspeicher gespeichert und nicht beibehalten, wenn die entsprechende Registrierungsstruktur entladen wird. Bei HKEY_LOCAL_MACHINEtritt dies auf, wenn das System heruntergefahren wird. Bei Registrierungsschlüsseln, die von der RegLoadKey--Funktion geladen werden, tritt dies auf, wenn die entsprechende RegUnLoadKey- ausgeführt wird. Die RegSaveKey--Funktion speichert keine veränderliche Schlüssel. Dieses Kennzeichen wird für bereits vorhandene Schlüssel ignoriert.

[in] samDesired

Eine Maske, die die Zugriffsrechte für den zu erstellenden Schlüssel angibt. Weitere Informationen finden Sie unter Registry Key Security and Access Rights.

[in, optional] lpSecurityAttributes

Ein Zeiger auf eine SECURITY_ATTRIBUTES Struktur, die bestimmt, ob das zurückgegebene Handle von untergeordneten Prozessen geerbt werden kann. Wenn lpSecurityAttributesNULL-ist, kann das Handle nicht geerbt werden.

Der lpSecurityDescriptor Mitglied der Struktur gibt einen Sicherheitsdeskriptor für den neuen Schlüssel an. Wenn lpSecurityAttributesNULL-ist, erhält der Schlüssel einen Standardsicherheitsdeskriptor. Die ACLs in einem Standardsicherheitsdeskriptor für einen Schlüssel werden von seinem direkten übergeordneten Schlüssel geerbt.

[out] phkResult

Ein Zeiger auf eine Variable, die ein Handle für den geöffneten oder erstellten Schlüssel empfängt. Wenn der Schlüssel nicht einer der vordefinierten Registrierungsschlüssel ist, rufen Sie die RegCloseKey--Funktion auf, nachdem Sie die Verwendung des Handle abgeschlossen haben.

[out, optional] lpdwDisposition

Ein Zeiger auf eine Variable, die einen der folgenden Dispositionswerte empfängt.

Wert Bedeutung
REG_CREATED_NEW_KEY
0x00000001L
Der Schlüssel war nicht vorhanden und wurde erstellt.
REG_OPENED_EXISTING_KEY
0x000000002L
Der Schlüssel war vorhanden und wurde einfach geöffnet, ohne geändert zu werden.
 

Wenn lpdwDispositionNULL-ist, werden keine Löschungsinformationen zurückgegeben.

[in] hTransaction

Ein Handle zu einer aktiven Transaktion. Dieses Handle wird von der CreateTransaction--Funktion zurückgegeben.

pExtendedParemeter

Dieser Parameter ist reserviert und muss NULL-sein.

Rückgabewert

Wenn die Funktion erfolgreich ist, wird der Rückgabewert ERROR_SUCCESS.

Wenn die Funktion fehlschlägt, ist der Rückgabewert ein nichtzero-Fehlercode, der in Winerror.h definiert ist. Sie können die FormatMessage--Funktion mit dem FORMAT_MESSAGE_FROM_SYSTEM Flag verwenden, um eine allgemeine Beschreibung des Fehlers zu erhalten.

Bemerkungen

Wenn mit dieser Funktion ein Schlüssel erstellt wird, werden nachfolgende Vorgänge für den Schlüssel durchgeführt. Wenn ein vorgang ohne Transaktionen für den Schlüssel ausgeführt wird, bevor die Transaktion zugesichert wird, wird die Transaktion zurückgesetzt. Nachdem eine Transaktion zugesichert oder zurückgesetzt wurde, müssen Sie den Schlüssel mit RegCreateKeyTransacted- oder RegOpenKeyTransacted- mit einem aktiven Transaktionshandle erneut öffnen, um zusätzliche Transaktionen durchzuführen. Weitere Informationen zu Transaktionen finden Sie unter Kernel Transaction Manager.

Beachten Sie, dass nachfolgende Vorgänge für Unterschlüssel dieses Schlüssels nicht automatisch durchgeführt werden. Daher führt RegDeleteKeyEx- keinen Transacted Delete-Vorgang aus. Verwenden Sie stattdessen die RegDeleteKeyTransacted--Funktion, um einen Transaktionslöschvorgang auszuführen.

Der Schlüssel, den die RegCreateKeyTransacted-Funktion erstellt, weist keine Werte auf. Eine Anwendung kann die RegSetValueEx--Funktion verwenden, um Schlüsselwerte festzulegen.

Die RegCreateKeyTransacted--Funktion erstellt alle fehlenden Schlüssel im angegebenen Pfad. Eine Anwendung kann dieses Verhalten nutzen, um mehrere Schlüssel gleichzeitig zu erstellen. Eine Anwendung kann z. B. einen Unterschlüssel mit vier Ebenen gleichzeitig mit den drei vorhergehenden Unterschlüsseln erstellen, indem eine Zeichenfolge des folgenden Formulars für den parameter lpSubKey angegeben wird:

unterschlüssel1\subkey2\subkey3\subkey4

Beachten Sie, dass dieses Verhalten dazu führt, dass unerwünschte Schlüssel erstellt werden, wenn ein vorhandener Schlüssel im Pfad falsch geschrieben ist.

Eine Anwendung kann keinen Schlüssel erstellen, der ein direktes untergeordnetes Element von HKEY_USERS oder HKEY_LOCAL_MACHINEist. Eine Anwendung kann Unterschlüssel in niedrigeren Ebenen der HKEY_USERS oder HKEY_LOCAL_MACHINE Strukturen erstellen.

Anmerkung

Der winreg.h-Header definiert RegCreateKeyTransacted als Alias, der automatisch die ANSI- oder Unicode-Version dieser Funktion basierend auf der Definition der UNICODE-Präprozessorkonstante auswählt. Das Mischen der Verwendung des codierungsneutralen Alias mit Code, der nicht codierungsneutral ist, kann zu Nichtübereinstimmungen führen, die zu Kompilierungs- oder Laufzeitfehlern führen. Weitere Informationen finden Sie unter Konventionen für Funktionsprototypen.

Anforderungen

Anforderung Wert
mindestens unterstützte Client- Windows Vista [nur Desktop-Apps]
mindestens unterstützte Server- Windows Server 2008 [Nur Desktop-Apps]
Zielplattform- Fenster
Header- winreg.h (enthalten Windows.h)
Library Advapi32.lib
DLL- Advapi32.dll

Siehe auch

RegCloseKey-

RegDeleteKeyTransacted

RegOpenKeyTransacted-

RegSaveKey-

Registrierungsfunktionen

Registrierungsübersicht

SECURITY_ATTRIBUTES