SHRegGetValueA-Funktion (shlwapi.h)

[SHRegGetValue kann in nachfolgenden Versionen des Betriebssystems oder Produkts geändert oder nicht verfügbar sein. Verwenden von RegGetValue an seiner Stelle.]

Ruft einen Registrierungswert ab.

Syntax

LSTATUS SHRegGetValueA(
  [in]      HKEY   hkey,
  [in]      LPCSTR pszSubKey,
  [in]      LPCSTR pszValue,
  [in]      SRRF   srrfFlags,
  [in, out] DWORD  *pdwType,
  [out]     void   *pvData,
  [in, out] DWORD  *pcbData
);

Parameter

[in] hkey

Typ: HKEY

Ein Handle zum aktuell geöffneten Schlüssel oder eines der folgenden vordefinierten Werte.

HKEY_CLASSES_ROOT

HKEY_CURRENT_CONFIG

HKEY_CURRENT_USER

HKEY_LOCAL_MACHINE

HKEY_PERFORMANCE_DATA

HKEY_USERS

[in] pszSubKey

Typ: LPCTSTR

Ein Zeiger auf eine null-beendete Zeichenfolge, die den relativen Pfad von hkey zum Unterschlüssel angibt, um den Wert abzurufen. Dieser Parameter kann NULL oder eine leere Zeichenfolge sein, in diesem Fall wird die Daten vom Hkey-Speicherort abgerufen.

[in] pszValue

Typ: LPCTSTR

Ein Zeiger auf eine null-beendete Zeichenfolge, die den Namen des Werts enthält. Dieser Parameter kann NULL oder eine leere Zeichenfolge sein, in diesem Fall wird die Daten aus dem Standardwert abgerufen.

[in] srrfFlags

Typ: SRRF

Mindestens eine der SRRF-Flags , die die abgerufenen Daten einschränken. Mindestens eine Typeinschränkung (SRRF_RT) muss angegeben werden.

[in, out] pdwType

Typ: LPDWORD

Ein Zeiger auf ein DWORD , das den Datentyp empfängt, der im abgerufenen Wert gespeichert ist. Bei Verwendung von Standardwerten ist die Eingabe pdwType der Typ des Standardwerts. Mögliche Werte finden Sie unter Registrierungsdatentypen. Wenn das SRRF_NOEXPAND Flag nicht festgelegt ist, werden REG_EXPAND_SZ Typen automatisch erweitert und als REG_SZ zurückgegeben. Wenn Die Typinformationen nicht erforderlich sind, kann dieser Parameter NULL sein.

[out] pvData

Typ: LPVOID

Ein Zeiger auf einen Puffer, der die Daten des Werts empfängt. Dieser Parameter kann NULL sein, wenn die Daten nicht benötigt werden. Wenn Sie beispielsweise nur für die Existenz eines Werts testen, wäre die spezifischen Wertdaten überflüssig.

[in, out] pcbData

Typ: LPDWORD

Ein Zeiger auf ein DWORD , das im Eintrag die Größe des Zieldatenpuffers pvData in Bytes enthält. Dieser Wert kann NUR NULL sein, wenn pvDataNULL ist. Auf exit zeigt pcbData auf einen dieser Werte.

pvData Rückgabewert pcbData
NULL ERROR_SUCCESS Größe in Bytes, die ausreichend sind, um die Registrierungsdaten zu halten. Beachten Sie, dass dies nicht garantiert die genaue Größe ist, sondern nur eine ausreichende Größe.
Nicht NULL ERROR_SUCCESS Genaue Anzahl von Bytes, die in pvData geschrieben wurden.
Nicht NULL ERROR_MORE_DATA Größe in Bytes, die erforderlich sind, um die gesamten Daten zu halten. Beachten Sie, dass dies nicht garantiert die genaue Größe ist, sondern nur eine ausreichende Größe.

Rückgabewert

Typ: LSTATUS

Gibt ERROR_SUCCESS zurück, falls erfolgreich oder ein nichtzero-Fehlercode in Winerror.h andernfalls definiert ist. Sie können die FormatMessage-Funktion mit dem FORMAT_MESSAGE_FROM_SYSTEM-Flag verwenden, um eine generische Beschreibung des Fehlers abzurufen.

Bemerkungen

SHRegGetValue stellt die Überprüfung des Datentyps, die Startmodusüberprüfung, die automatische Erweiterung von REG_EXPAND_SZ Daten und garantierte Null-Beendigung von REG_SZ, REG_EXPAND_SZ und REG_MULTI_SZ Daten bereit.

Der von hkey identifizierte Schlüssel muss mit KEY_QUERY_VALUE Sicherheitszugriff geöffnet worden sein. Wenn pszSubKey nicht NULL oder eine leere Zeichenfolge ist, muss dieser Schlüssel auch mit KEY_QUERY_VALUE Sicherheitszugriff im aktuellen Aufrufkontext geöffnet werden können.

Wenn der Datentyp REG_SZ ist, REG_EXPAND_SZ oder REG_MULTI_SZ, enthält alle zurückgegebenen Daten oder berücksichtigt die Null-Beendigung der Zeichenfolge. Wenn pvData z. B. nicht NULL ist, wird die in diesem Puffer zurückgegebenen Daten null beendet. Wenn pcbData nicht NULL ist, enthält die Puffergröße, die darauf verweist, die bytes, die erforderlich sind, um das endende Nullzeichen zu halten.

Es sei denn, das SRRF_NOEXPAND Flag festgelegt ist, werden Zeichenfolgendaten vom Typ REG_EXPAND_SZ automatisch erweitert, bevor sie zurückgegeben werden. Der Typ der erweiterten Zeichenfolge wird in pdwType als REG_SZ gemeldet, der PcbData-Parameter verweist auf die Anzahl der Bytes, die für die erweiterte Zeichenfolge geschrieben wurden, und der Puffer, der von pvData auf die erweiterte Version der Zeichenfolge verweist.

Leistungsnotizen

Wenn pszSubKey nicht NULL oder eine leere Zeichenfolge ist, wird diese Taste bei jedem Zugriff durch diese Funktion geöffnet und geschlossen. Wenn Ihre Anwendung eine Reihe von Werten aus demselben Unterschlüssel abrufen muss, sehen Sie eine bessere Leistung, indem Sie den Schlüssel mithilfe von RegOpenKeyEx öffnen, bevor Sie SHRegGetValue aufrufen. Verwenden Sie den im PhkResult-Parameter von RegOpenKeyEx zurückgegebenen Schlüssel als hkey-Parameter in dieser Funktion, wobei pszSubKey auf NULL festgelegt ist.

Das Potenzial für einen zusätzlichen Aufruf der Registrierung, die Daten zu lesen oder neu zu lesen, ist vorhanden, wenn der Datentyp REG_EXPAND_SZ ist und das SRRF_NOEXPAND-Flag nicht festgelegt wurde. Die folgenden Bedingungen führen zu diesem zusätzlichen Aufruf.

  • pvData ist NULL, pcbData ist nicht NULL. Obwohl die Daten nicht abgerufen werden, muss die Registrierung gelesen werden, um die Zeichenfolge abzurufen und diese Zeichenfolge erweitert, um die erforderliche Größe des Datenpuffers zu ermitteln.
  • pvData ist nicht NULL, ist aber zu klein, um die Daten zu halten. Die Daten werden erneut gelesen, um die vollständige Zeichenfolge abzurufen, die Zeichenfolge wird erweitert, und die gesamt erforderliche Größe wird bestimmt.

Hinweis

Der Shlwapi.h-Header definiert SHRegGetValue als Alias, der die ANSI- oder Unicode-Version dieser Funktion basierend auf der Definition der UNICODE-Präprozessorkonstanten automatisch auswählt. Das Mischen der Verwendung des Codierungsneutralen Alias mit Code, der nicht codierungsneutral ist, kann dazu führen, dass keine Übereinstimmungen auftreten, die zu Kompilierungs- oder Laufzeitfehlern führen. Weitere Informationen finden Sie unter Konventionen für Funktionsprototypen.

Anforderungen

   
Unterstützte Mindestversion (Client) Windows XP mit SP2 [nur Desktop-Apps]
Unterstützte Mindestversion (Server) Windows Server 2003 [nur Desktop-Apps]
Zielplattform Windows
Kopfzeile shlwapi.h
Bibliothek Shlwapi.lib
DLL Shlwapi.dll (Version 6.0 oder höher)

Weitere Informationen

RegQueryValueEx