Función LsaStorePrivateData (ntsecapi.h)

No use las funciones de datos privados de LSA ni el cifrado y el descifrado de datos genéricos. En su lugar, use las funciones CryptProtectData y CryptUnprotectData . Use solo las funciones de datos privados de LSA cuando sea necesario manipular secretos de LSA como se documenta en El modelo de datos de objetos secretos

Sintaxis

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

Parámetros

[in] PolicyHandle

Identificador de un objeto Policy . El identificador debe tener el derecho de acceso POLICY_CREATE_SECRET si es la primera vez que los datos se almacenan en la clave especificada por el parámetro KeyName . Para obtener más información, vea Apertura de un identificador de objeto de directiva.

[in] KeyName

Puntero a una estructura de LSA_UNICODE_STRING que contiene el nombre de la clave en la que se almacenan los datos privados.

[in] PrivateData

Puntero a una estructura de LSA_UNICODE_STRING que contiene los datos privados que se van a almacenar. La función cifra estos datos antes de almacenarlos.

Si este parámetro es NULL, la función elimina los datos privados almacenados en la clave y elimina la clave. Los intentos posteriores de recuperar datos de la clave devolverán el código de error STATUS_OBJECT_NAME_NOT_FOUND.

Valor devuelto

Si la función se ejecuta correctamente, el valor devuelto es STATUS_SUCCESS.

Si se produce un error en la función, el valor devuelto es un código NTSTATUS. Para obtener más información, vea Valores devueltos de la función de directiva LSA.

Puede usar la función LsaNtStatusToWinError para convertir el código NTSTATUS en un código de error de Windows.

Comentarios

Las aplicaciones de servidor pueden usar la función LsaStorePrivateData para almacenar contraseñas de cliente y máquina.

Como se describe en Private Data Object, los objetos de datos privados incluyen tres tipos especializados: local, global y máquina. Los objetos especializados se identifican mediante un prefijo en el nombre de clave: "L$" para objetos locales, "G$" para objetos globales y "M$" para objetos de máquina. No se puede acceder a los objetos locales de forma remota. Solo el sistema operativo puede tener acceso a los objetos de máquina.

Además de estos prefijos, los siguientes valores también indican objetos locales o de máquina. Estos valores son compatibles con versiones anteriores y no se deben usar al crear nuevos objetos locales o de máquina. El nombre de clave de los objetos de datos privados locales también puede ser "$machine.acc", "SAC", "SAI", "SANSC" o empezar por "RasDialParms" o "RasCredentials". El nombre de clave de los objetos de máquina también puede comenzar por " NL$" o "sc".

Los objetos de datos privados que no usan ninguna de las convenciones de nombre de clave anteriores se pueden acceder de forma remota y no se replican en otros dominios.

Los datos almacenados por la función LsaStorePrivateData no están absolutamente protegidos. Sin embargo, los datos se cifran antes de almacenarse y la clave tiene una DACL que solo permite al creador y a los administradores leer los datos.

Use la función LsaRetrievePrivateData para recuperar el valor almacenado por LsaStorePrivateData.

Requisitos

Requisito Value
Cliente mínimo compatible Windows XP [solo aplicaciones de escritorio]
Servidor mínimo compatible Windows Server 2003 [solo aplicaciones de escritorio]
Plataforma de destino Windows
Encabezado ntsecapi.h
Library Advapi32.lib
Archivo DLL Advapi32.dll

Consulte también

LSA_UNICODE_STRING

LsaRetrievePrivateData