Partager via


LsaStorePrivateData, fonction (ntsecapi.h)

N’utilisez pas les fonctions de données privées LSA ou le chiffrement et le déchiffrement des données génériques. Utilisez plutôt les fonctions CryptProtectData et CryptUnprotectData . Utilisez uniquement les fonctions de données privées LSA lorsqu’il est nécessaire de manipuler des secrets LSA comme indiqué dans Secret Object Data Model

Syntaxe

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

Paramètres

[in] PolicyHandle

Handle d’un objet Policy . Le handle doit avoir le droit d’accès POLICY_CREATE_SECRET s’il s’agit de la première fois que les données sont stockées sous la clé spécifiée par le paramètre KeyName . Pour plus d’informations, consultez Ouverture d’un handle d’objet de stratégie.

[in] KeyName

Pointeur vers une structure LSA_UNICODE_STRING contenant le nom de la clé sous laquelle les données privées sont stockées.

[in] PrivateData

Pointeur vers une structure de LSA_UNICODE_STRING contenant les données privées à stocker. La fonction chiffre ces données avant de les stocker.

Si ce paramètre a la valeur NULL, la fonction supprime toutes les données privées stockées sous la clé et supprime la clé. Les tentatives suivantes pour récupérer des données à partir de la clé retournent le code d’erreur STATUS_OBJECT_NAME_NOT_FOUND.

Valeur retournée

Si la fonction réussit, la valeur de retour est STATUS_SUCCESS.

Si la fonction échoue, la valeur de retour est un code NTSTATUS. Pour plus d’informations, consultez Valeurs de retour de la fonction de stratégie LSA.

Vous pouvez utiliser la fonction LsaNtStatusToWinError pour convertir le code NTSTATUS en code d’erreur Windows.

Remarques

La fonction LsaStorePrivateData peut être utilisée par les applications serveur pour stocker les mots de passe des clients et des ordinateurs.

Comme décrit dans Private Data Object, les objets de données privés incluent trois types spécialisés : local, global et machine. Les objets spécialisés sont identifiés par un préfixe dans le nom de clé : « L$ » pour les objets locaux, « G$ » pour les objets globaux et « M$ » pour les objets machine. Les objets locaux ne sont pas accessibles à distance. Les objets machine sont accessibles uniquement par le système d’exploitation.

En plus de ces préfixes, les valeurs suivantes indiquent également des objets locaux ou de machine. Ces valeurs sont prises en charge pour la compatibilité descendante et ne doivent pas être utilisées lorsque vous créez des objets locaux ou de machine. Le nom de clé des objets de données privés locaux peut également être « $machine.acc », « SAC », « SAI », « SANSC », ou commencer par « RasDialParms » ou « RasCredentials ». Le nom de clé des objets machine peut également commencer par « NL$ » ou « sc ».

Les objets de données privées qui n’utilisent aucune des conventions de nom de clé précédentes sont accessibles à distance et ne sont pas répliqués vers d’autres domaines.

Les données stockées par la fonction LsaStorePrivateData ne sont pas absolument protégées. Toutefois, les données sont chiffrées avant d’être stockées, et la clé a une liste de contrôle d’accès (DACL) qui permet uniquement au créateur et aux administrateurs de lire les données.

Utilisez la fonction LsaRetrievePrivateData pour récupérer la valeur stockée par LsaStorePrivateData.

Configuration requise

Condition requise Valeur
Client minimal pris en charge Windows XP [applications de bureau uniquement]
Serveur minimal pris en charge Windows Server 2003 [applications de bureau uniquement]
Plateforme cible Windows
En-tête ntsecapi.h
Bibliothèque Advapi32.lib
DLL Advapi32.dll

Voir aussi

LSA_UNICODE_STRING

LsaRetrievePrivateData