Funzione RegGetValueA (winreg.h)
Recupera il tipo e i dati per il valore del Registro di sistema specificato.
Sintassi
LSTATUS RegGetValueA(
[in] HKEY hkey,
[in, optional] LPCSTR lpSubKey,
[in, optional] LPCSTR lpValue,
[in, optional] DWORD dwFlags,
[out, optional] LPDWORD pdwType,
[out, optional] PVOID pvData,
[in, out, optional] LPDWORD pcbData
);
Parametri
[in] hkey
Handle per una chiave del Registro di sistema aperta. La chiave deve essere stata aperta con il diritto di accesso KEY_QUERY_VALUE. Per altre informazioni, vedere Sicurezza e diritti di accesso delle chiavi del Registro di sistema.
Questo handle viene restituito dalla funzione RegCreateKeyEx, RegCreateKeyTransacted, RegOpenKeyEx o RegOpenKeyTransacted . Può anche essere una delle chiavi predefinite seguenti:
- HKEY_CLASSES_ROOT
- HKEY_CURRENT_CONFIG
- HKEY_CURRENT_USER
- HKEY_LOCAL_MACHINE
- HKEY_PERFORMANCE_DATA
- HKEY_PERFORMANCE_NLSTEXT
- HKEY_PERFORMANCE_TEXT
- HKEY_USERS
[in, optional] lpSubKey
Percorso di una chiave del Registro di sistema relativa alla chiave specificata dal parametro hkey . Il valore del Registro di sistema verrà recuperato da questa sottochiave.
Il percorso non fa distinzione tra maiuscole e minuscole.
Se questo parametro è NULL o una stringa vuota, "", il valore verrà letto dalla chiave specificata da hkey stessa.
[in, optional] lpValue
Nome del valore del Registro di sistema.
Se questo parametro è NULL o una stringa vuota, "", la funzione recupera il tipo e i dati per il valore predefinito o senza nome della chiave, se presente. Le chiavi non hanno automaticamente un valore senza nome o predefinito e i valori senza nome possono essere di qualsiasi tipo.
Per altre informazioni, vedere Limiti delle dimensioni degli elementi del Registro di sistema.
[in, optional] dwFlags
Flag che limitano il tipo di dati di valore su cui eseguire query. Se il tipo di dati del valore non soddisfa questo criterio, la funzione ha esito negativo. Questo parametro può essere uno o più dei valori seguenti.
Questo parametro può includere anche uno o più dei valori seguenti.
Valore | Significato |
---|---|
|
Non espandere automaticamente le stringhe di ambiente se il valore è di tipo REG_EXPAND_SZ. |
|
Se pvData non è NULL, impostare il contenuto del buffer su zero in caso di errore. |
|
Se lpSubKey non è NULL, aprire la sottochiave che lpSubKey specifica con i diritti di accesso KEY_WOW64_64KEY.
Per informazioni su questi diritti di accesso, vedere Sicurezza e diritti di accesso della chiave del Registro di sistema.
Non è possibile specificare RRF_SUBKEY_WOW6464KEY in combinazione con RRF_SUBKEY_WOW6432KEY. |
|
Se lpSubKey non è NULL, aprire la sottochiave che lpSubKey specifica con i diritti di accesso KEY_WOW64_32KEY.
Per informazioni su questi diritti di accesso, vedere Sicurezza e diritti di accesso della chiave del Registro di sistema.
Non è possibile specificare RRF_SUBKEY_WOW6432KEY in combinazione con RRF_SUBKEY_WOW6464KEY. |
[out, optional] pdwType
Puntatore a una variabile che riceve un codice che indica il tipo di dati archiviati nel valore specificato. Per un elenco dei codici di tipo possibili, vedere Tipi di valore del Registro di sistema. Questo parametro può essere NULL se il tipo non è obbligatorio.
[out, optional] pvData
Puntatore a un buffer che riceve i dati del valore. Questo parametro può essere NULL se i dati non sono necessari.
Se i dati sono una stringa, la funzione verifica la presenza di un carattere Null di terminazione. Se non viene trovato, la stringa viene archiviata con un carattere di terminazione Null se il buffer è sufficientemente grande per contenere il carattere aggiuntivo. In caso contrario, la funzione ha esito negativo e restituisce ERROR_MORE_DATA.
[in, out, optional] pcbData
Puntatore a una variabile che specifica le dimensioni del buffer a cui punta il parametro pvData , in byte. Al termine della funzione, questa variabile contiene le dimensioni dei dati copiati in pvData.
Il parametro pcbData può essere NULL solo se pvData è NULL.
Se i dati hanno il tipo REG_SZ, REG_MULTI_SZ o REG_EXPAND_SZ, queste dimensioni includono qualsiasi carattere o carattere Null di terminazione. Per altre informazioni, vedere la sezione Osservazioni.
Se il buffer specificato dal parametro pvData non è sufficientemente grande da contenere i dati, la funzione restituisce ERROR_MORE_DATA e archivia le dimensioni del buffer necessarie nella variabile a cui punta pcbData. In questo caso, il contenuto del buffer pvData è zero se dwFlags specifica RRF_ZEROONFAILURE e non definito in caso contrario.
Se pvData è NULL e pcbData è diverso da NULL, la funzione restituisce ERROR_SUCCESS e archivia le dimensioni dei dati, in byte, nella variabile a cui punta pcbData. Ciò consente a un'applicazione di determinare il modo migliore per allocare un buffer per i dati del valore.
Se hKey specifica HKEY_PERFORMANCE_DATA e il buffer pvData non è sufficiente per contenere tutti i dati restituiti, la funzione restituisce ERROR_MORE_DATA e il valore restituito tramite il parametro pcbData non è definito. Ciò è dovuto al fatto che le dimensioni dei dati delle prestazioni possono cambiare da una chiamata alla successiva. In questo caso, è necessario aumentare le dimensioni del buffer e chiamare nuovamente RegGetValue passando le dimensioni aggiornate del buffer nel parametro pcbData . Ripetere questa operazione fino a quando la funzione non riesce. È necessario mantenere una variabile separata per tenere traccia delle dimensioni del buffer, perché il valore restituito da pcbData è imprevedibile.
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 di sistema.
Se il buffer pvData è troppo piccolo per ricevere il valore, la funzione restituisce ERROR_MORE_DATA.
Se il valore del Registro di sistema lpValue non esiste, la funzione restituisce ERROR_FILE_NOT_FOUND.
Se dwFlags specifica una combinazione di RRF_SUBKEY_WOW6464KEY e RRF_SUBKEY_WOW6432KEY, la funzione restituisce ERROR_INVALID_PARAMETER.
Commenti
Un'applicazione chiama in genere RegEnumValue per determinare i nomi dei valori e quindi RegGetValue per recuperare i dati per i nomi.
Se i dati hanno il REG_SZ, REG_MULTI_SZ o REG_EXPAND_SZ tipo e la versione ANSI di questa funzione viene usata (chiamando in modo esplicito RegGetValueA o non definendo UNICODE prima di includere il file Windows.h), questa funzione converte la stringa Unicode archiviata in una stringa ANSI prima di copiarla nel buffer puntato da pvData.
Quando si chiama questa funzione con hkey impostata sull'handle HKEY_PERFORMANCE_DATA e una stringa di valore di un oggetto specificato, la struttura di dati restituita a volte ha oggetti non rilevati. Non sorprendersi; si tratta di un comportamento normale. È sempre consigliabile seguire la struttura dei dati restituita per cercare l'oggetto richiesto.
Si noti che le operazioni che accedono a determinate chiavi del Registro di sistema vengono reindirizzate. Per altre informazioni, vedere Virtualizzazione del Registro di sistemae dati dell'applicazione a 32 bit e a 64 bit nel Registro di sistema.
Per compilare un'applicazione che usa questa funzione, definire _WIN32_WINNT come 0x0600 o versioni successive. Per altre informazioni, vedere Uso delle intestazioni di Windows.
Nota
L'intestazione winreg.h definisce RegGetValue 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
Client minimo supportato | Windows Vista, Windows XP Professional x64 Edition |
Server minimo supportato | Windows Server 2008, Windows Server 2003 con SP1 |
Piattaforma di destinazione | Windows |
Intestazione | winreg.h (include Windows.h) |
Libreria | Advapi32.lib |
DLL | Advapi32.dll |