Share via


LsaStorePrivateData-Funktion (ntsecapi.h)

Verwenden Sie keine privaten LSA-Datenfunktionen oder generische Datenverschlüsselung und -entschlüsselung. Verwenden Sie stattdessen die Funktionen CryptProtectData und CryptUnprotectData . Verwenden Sie die privaten LSA-Datenfunktionen nur, wenn es erforderlich ist, LSA-Geheimnisse zu bearbeiten, wie im Datenmodell für geheime Objekte dokumentiert.

Syntax

NTSTATUS LsaStorePrivateData(
  [in] LSA_HANDLE          PolicyHandle,
  [in] PLSA_UNICODE_STRING KeyName,
  [in] PLSA_UNICODE_STRING PrivateData
);

Parameter

[in] PolicyHandle

Ein Handle für ein Policy-Objekt . Das Handle muss über das POLICY_CREATE_SECRET-Zugriffsrecht verfügen, wenn Daten zum ersten Mal unter dem durch den KeyName-Parameter angegebenen Schlüssel gespeichert werden. Weitere Informationen finden Sie unter Öffnen eines Richtlinienobjekthandles.

[in] KeyName

Zeiger auf eine LSA_UNICODE_STRING Struktur, die den Namen des Schlüssels enthält, unter dem die privaten Daten gespeichert werden.

[in] PrivateData

Zeiger auf eine LSA_UNICODE_STRING-Struktur , die die zu speichernden privaten Daten enthält. Die Funktion verschlüsselt diese Daten vor dem Speichern.

Wenn dieser Parameter NULL ist, löscht die Funktion alle privaten Daten, die unter dem Schlüssel gespeichert sind, und löscht den Schlüssel. Nachfolgende Versuche, Daten aus dem Schlüssel abzurufen, geben den STATUS_OBJECT_NAME_NOT_FOUND Fehlercode zurück.

Rückgabewert

Wenn die Funktion erfolgreich ist, wird der Rückgabewert STATUS_SUCCESS.

Wenn die Funktion fehlschlägt, ist der Rückgabewert ein NTSTATUS-Code. Weitere Informationen finden Sie unter Rückgabewerte der LSA-Richtlinienfunktion.

Sie können die LsaNtStatusToWinError-Funktion verwenden, um den NTSTATUS-Code in einen Windows-Fehlercode zu konvertieren.

Hinweise

Die LsaStorePrivateData-Funktion kann von Serveranwendungen verwendet werden, um Client- und Computerkennwörter zu speichern.

Wie in Private Data Object beschrieben, umfassen private Datenobjekte drei spezialisierte Typen: lokal, global und computer. Spezialisierte Objekte werden durch ein Präfix im Schlüsselnamen identifiziert: "L$" für lokale Objekte, "G$" für globale Objekte und "M$" für Computerobjekte. Auf lokale Objekte kann nicht remote zugegriffen werden. Auf Computerobjekte kann nur das Betriebssystem zugreifen.

Zusätzlich zu diesen Präfixen geben die folgenden Werte auch lokale Oder Computerobjekte an. Diese Werte werden aus Gründen der Abwärtskompatibilität unterstützt und sollten nicht verwendet werden, wenn Sie neue lokale Objekte oder Computerobjekte erstellen. Der Schlüsselname lokaler privater Datenobjekte kann auch "$machine.acc", "SAC", "SAI", "SANSC" sein oder mit "RasDialParms" oder "RasCredentials" beginnen. Der Schlüsselname für Computerobjekte kann auch mit "NL$" oder "sc" beginnen.

Private Datenobjekte, die keine der oben genannten Schlüsselnamenskonventionen verwenden, können remote zugegriffen werden und werden nicht in andere Domänen repliziert.

Die von der LsaStorePrivateData-Funktion gespeicherten Daten sind nicht absolut geschützt. Die Daten werden jedoch verschlüsselt, bevor sie gespeichert werden, und der Schlüssel verfügt über eine DACL , die es nur dem Ersteller und Administratoren ermöglicht, die Daten zu lesen.

Verwenden Sie die LsaRetrievePrivateData-Funktion , um den von LsaStorePrivateData gespeicherten Wert abzurufen.

Anforderungen

Anforderung Wert
Unterstützte Mindestversion (Client) Windows XP [nur Desktop-Apps]
Unterstützte Mindestversion (Server) Windows Server 2003 [nur Desktop-Apps]
Zielplattform Windows
Kopfzeile ntsecapi.h
Bibliothek Advapi32.lib
DLL Advapi32.dll

Weitere Informationen

LSA_UNICODE_STRING

LsaRetrievePrivateData