Apertura di un handle a un oggetto Registry-Key
Per aprire un handle a un oggetto chiave del Registro di sistema, eseguire il processo in due passaggi seguente:
Creare una struttura OBJECT_ATTRIBUTES e inizializzarla chiamando InitializeObjectAttributes. Specificare il nome della chiave da modificare come parametro ObjectName in InitializeObjectAttributes.
Se si passa NULL come parametro RootDirectory a InitializeObjectAttributes, ObjectName deve essere il percorso completo della chiave del Registro di sistema, a partire da \Registry. In caso contrario, RootDirectory deve essere un handle aperto per una chiave e ObjectName è il percorso relativo a tale chiave.
Aprire un handle per l'oggetto chiave chiamando ZwCreateKey o ZwOpenKey e passare la struttura OBJECT_ATTRIBUTES . Se la chiave non esiste già, ZwCreateKey creerà la chiave, mentre ZwOpenKey restituirà STATUS_OBJECT_NAME_NOT_FOUND.
Si passa un parametro DesiredAccess a ZwCreateKey o ZwOpenKey che contiene i diritti di accesso richiesti. È necessario specificare i diritti di accesso che consentono le operazioni eseguite dal driver. Nella tabella seguente sono elencate le operazioni che è possibile eseguire e i diritti di accesso corrispondenti da richiedere.
Operazione | Diritto di accesso richiesto |
---|---|
Ottenere un valore della chiave del Registro di sistema. |
KEY_QUERY_VALUE o KEY_READ |
Impostare un valore della chiave del Registro di sistema. |
KEY_SET_VALUE o KEY_WRITE |
Scorrere tutte le sottochiavi di una chiave. |
KEY_ENUMERATE_SUB_KEYS o KEY_READ |
Creare una sottochiave. |
KEY_CREATE_SUB_KEY o KEY_WRITE |
Eliminare una chiave. |
DELETE |
Per altre informazioni sui valori disponibili per il parametro DesiredAccess , vedere ZwCreateKey.
È anche possibile chiamare IoOpenDeviceRegistryKey e IoOpenDeviceInterfaceRegistryKey per aprire gli handle per le chiavi del Registro di sistema specifiche del dispositivo e specifiche dell'interfaccia del dispositivo. Per altre informazioni, vedere Routine del Registro di sistema Plug and Play.
Nota Per le chiamate a ZwCreateKey, ZwOpenKey, IoOpenDeviceRegistryKey e IoOpenDeviceInterfaceRegistryKey, i diritti di accesso generici, GENERIC_READ e GENERIC_WRITE, sono equivalenti ai diritti di accesso specifici della chiave, rispettivamente KEY_READ e KEY_WRITE e possono essere usati come sostituti di questi diritti di accesso specifici della chiave.