RegOpenKeyTransactedA-Funktion (winreg.h)

Öffnet den angegebenen Registrierungsschlüssel und ordnet ihn einer Transaktion zu. Beachten Sie, dass bei Schlüsselnamen die Groß-/Kleinschreibung nicht beachtet wird.

Syntax

LSTATUS RegOpenKeyTransactedA(
  [in]           HKEY   hKey,
  [in, optional] LPCSTR lpSubKey,
  [in]           DWORD  ulOptions,
  [in]           REGSAM samDesired,
  [out]          PHKEY  phkResult,
  [in]           HANDLE hTransaction,
                 PVOID  pExtendedParemeter
);

Parameter

[in] hKey

Ein Handle für einen geöffneten Registrierungsschlüssel. Dieses Handle wird von der RegCreateKeyEx-, RegCreateKeyTransacted-, RegOpenKeyEx- oder RegOpenKeyTransacted-Funktion zurückgegeben. Es kann auch einer der folgenden vordefinierten Schlüssel sein:

HKEY_CLASSES_ROOTHKEY_CURRENT_USERHKEY_LOCAL_MACHINEHKEY_USERS

[in, optional] lpSubKey

Der Name des zu öffnenden Registrierungsunterschlüssels.

Bei Schlüsselnamen wird die Groß-/Kleinschreibung nicht beachtet.

Wenn der lpSubKey-ParameterNULL oder ein Zeiger auf eine leere Zeichenfolge ist und hKey ein vordefinierter Schlüssel ist, aktualisiert das System den vordefinierten Schlüssel, und phkResult empfängt dasselbe hKey-Handle , das an die Funktion übergeben wird. Andernfalls erhält phkResult ein neues Handle für den geöffneten Schlüssel.

Weitere Informationen finden Sie unter Größenbeschränkungen für Registrierungselemente.

[in] ulOptions

Dieser Parameter ist reserviert und muss null sein.

[in] samDesired

Eine Maske, die die gewünschten Zugriffsrechte für den Schlüssel angibt. Die Funktion schlägt fehl, wenn der Sicherheitsdeskriptor des Schlüssels den angeforderten Zugriff für den aufrufenden Prozess nicht zulässt. Weitere Informationen finden Sie unter Sicherheit und Zugriffsrechte für Registrierungsschlüssel.

[out] phkResult

Ein Zeiger auf eine Variable, die ein Handle für den geöffneten Schlüssel empfängt. Wenn der Schlüssel keiner der vordefinierten Registrierungsschlüssel ist, rufen Sie die RegCloseKey-Funktion auf, nachdem Sie das Handle verwendet haben.

[in] hTransaction

Ein Handle für eine aktive 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 in Winerror.h definierter Fehlercode ungleich null. Sie können die FormatMessage-Funktion mit dem flag FORMAT_MESSAGE_FROM_SYSTEM verwenden, um eine generische Beschreibung des Fehlers abzurufen.

Hinweise

Wenn ein Schlüssel mit dieser Funktion geöffnet wird, werden nachfolgende Vorgänge für den Schlüssel ausgeführt. Wenn ein nicht transaktionierter Vorgang für den Schlüssel ausgeführt wird, bevor ein Commit für die Transaktion ausgeführt wird, wird für die Transaktion ein Rollback ausgeführt. Nachdem ein Commit für eine Transaktion ausgeführt oder ein Rollback ausgeführt wurde, müssen Sie den Schlüssel mithilfe der RegCreateKeyTransacted - oder RegOpenKeyTransacted-Funktion mit einem aktiven Transaktionshandle erneut öffnen, um zusätzliche Vorgänge 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 die RegDeleteKeyEx-Funktion keinen transaktionierten Löschvorgang aus. Verwenden Sie stattdessen die RegDeleteKeyTransacted-Funktion , um einen Transaktionslöschvorgang auszuführen.

Im Gegensatz zur RegCreateKeyTransacted-Funktion erstellt die RegOpenKeyTransacted-Funktion den angegebenen Schlüssel nicht, wenn der Schlüssel nicht in der Registrierung vorhanden ist.

Wenn Ihr Dienst oder Ihre Anwendung die Identität verschiedener Benutzer angibt, verwenden Sie diese Funktion nicht mit HKEY_CURRENT_USER. Rufen Sie stattdessen die RegOpenCurrentUser-Funktion auf.

Wenn der in phkResult zurückgegebene Schlüssel ein vordefinierter Registrierungsschlüssel ist, ist er nicht in der bereitgestellten Transaktion enthalten.

Ein einzelner Registrierungsschlüssel kann nur 65.534 Mal geöffnet werden. Wenn Sie versuchen, den 65.535. Öffnen-Vorgang auszuführen, schlägt diese Funktion mit ERROR_NO_SYSTEM_RESOURCES fehl.

Hinweis

Der winreg.h-Header definiert RegOpenKeyTransacted als Alias, der die ANSI- oder Unicode-Version dieser Funktion basierend auf der Definition der UNICODE-Präprozessorkonstante automatisch 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
Unterstützte Mindestversion (Client) Windows Vista [nur Desktop-Apps]
Unterstützte Mindestversion (Server) Windows Server 2008 [nur Desktop-Apps]
Zielplattform Windows
Kopfzeile winreg.h (Windows.h einschließen)
Bibliothek Advapi32.lib
DLL Advapi32.dll

Weitere Informationen

RegCloseKey

RegCreateKeyTransacted

RegDeleteKeyTransacted

Registrierungsfunktionen

Übersicht über die Registrierung