Condividi tramite


Funzione RegOpenKeyTransactedA (winreg.h)

Apre la chiave del Registro di sistema specificata e la associa a una transazione. Si noti che i nomi delle chiavi non sono distinzione tra maiuscole e minuscole.

Sintassi

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

Parametri

[in] hKey

Handle per una chiave del Registro di sistema aperta. Questo handle viene restituito dalla funzione RegCreateKeyEx, RegCreateKeyTransacted, RegOpenKeyEx o RegOpenKeyTransacted. Può anche essere una delle chiavi predefinite seguenti:

HKEY_CLASSES_ROOT HKEY_CURRENT_USERHKEY_LOCAL_MACHINE HKEY_USERS

[in, optional] lpSubKey

Nome della sottochiave del Registro di sistema da aprire.

I nomi delle chiavi non sono distinzione tra maiuscole e minuscole.

Se il parametro lpSubKey è NULL o un puntatore a una stringa vuota e se hKey è una chiave predefinita, il sistema aggiorna la chiave predefinita e phkResult riceve lo stesso handle hKey passato alla funzione. In caso contrario, phkResult riceve un nuovo handle per la chiave aperta.

Per altre informazioni, vedere Limiti delle dimensioni degli elementi del Registro di sistema.

[in] ulOptions

Questo parametro è riservato e deve essere zero.

[in] samDesired

Maschera che specifica i diritti di accesso desiderati alla chiave. La funzione ha esito negativo se il descrittore di sicurezza della chiave non consente l'accesso richiesto per il processo di chiamata. Per altre informazioni, vedere Sicurezza delle chiavi del Registro di sistema e diritti di accesso.

[out] phkResult

Puntatore a una variabile che riceve un handle per la chiave aperta. Se la chiave non è una delle chiavi predefinite del Registro di sistema, chiamare la funzione RegCloseKey dopo aver completato l'uso dell'handle.

[in] hTransaction

Handle per una transazione attiva. Questo handle viene restituito dalla funzione CreateTransaction .

pExtendedParemeter

Questo parametro è riservato e deve essere NULL.

Valore restituito

Se la funzione ha esito positivo, il valore restituito è ERROR_SUCCESS.

Se la funzione ha esito negativo, il valore restituito è un codice di errore diverso da zero definito in Winerror.h. È possibile usare la funzione FormatMessage con il flag FORMAT_MESSAGE_FROM_SYSTEM per ottenere una descrizione generica dell'errore.

Commenti

Quando viene aperta una chiave usando questa funzione, vengono eseguite operazioni successive sulla chiave. Se viene eseguita un'operazione non transazionale sulla chiave prima del commit della transazione, la transazione viene eseguito il rollback. Dopo il commit o il rollback di una transazione, è necessario riaprire la chiave usando la funzione RegCreateKeyTransacted o RegOpenKeyTransacted con un handle di transazione attivo per eseguire operazioni aggiuntive transazioni. Per altre informazioni sulle transazioni, vedere Kernel Transaction Manager.

Si noti che le operazioni successive sulle sottochiavi di questa chiave non vengono transazionate automaticamente. Pertanto, la funzione RegDeleteKeyEx non esegue un'operazione di eliminazione transazionata. Usare invece la funzione RegDeleteKeyTransacted per eseguire un'operazione di eliminazione transazionata.

A differenza della funzione RegCreateKeyTransacted , la funzione RegOpenKeyTransacted non crea la chiave specificata se la chiave non esiste nel Registro di sistema.

Se il servizio o l'applicazione rappresenta utenti diversi, non usare questa funzione con HKEY_CURRENT_USER. Chiamare invece la funzione RegOpenCurrentUser .

Se la chiave restituita in phkResult è una chiave predefinita del Registro di sistema, non è inclusa nella transazione specificata.

Una singola chiave del Registro di sistema può essere aperta solo 65.534 volte. Quando si tenta l'operazioneaperta 65.535, questa funzione non riesce con ERROR_NO_SYSTEM_RESOURCES.

Nota

L'intestazione winreg.h definisce RegOpenKeyTransacted come alias che seleziona automaticamente la versione ANSI o Unicode di questa funzione in base alla definizione della costante preprocessore UNICODE. La combinazione dell'utilizzo dell'alias di codifica neutrale con il codice che non è neutrale dalla codifica può causare errori di corrispondenza che causano errori di compilazione o runtime. Per altre informazioni, vedere Convenzioni per i prototipi di funzione.

Requisiti

Requisito Valore
Client minimo supportato Windows Vista [solo app desktop]
Server minimo supportato Windows Server 2008 [solo app desktop]
Piattaforma di destinazione Windows
Intestazione winreg.h (include Windows.h)
Libreria Advapi32.lib
DLL Advapi32.dll

Vedi anche

Regclosekey

RegCreateKeyTransacted

RegDeleteKeyTransacted

Funzioni del Registro di sistema

Panoramica del Registro di sistema