LsaStorePrivateData 函数 (ntsecapi.h)

请勿使用 LSA 专用数据函数或通用数据加密和解密。 请改用 CryptProtectDataCryptUnprotectData 函数。 仅当需要按照机密对象数据模型中所述操作 LSA 机密时,才使用 LSA 专用数据函数

语法

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

参数

[in] PolicyHandle

Policy 对象的句柄。 如果这是第一次将数据存储在 KeyName 参数指定的键下,则句柄必须具有POLICY_CREATE_SECRET访问权限。 有关详细信息,请参阅 打开策略对象句柄

[in] KeyName

指向 LSA_UNICODE_STRING 结构的指针,该结构包含用于存储私有数据的密钥的名称。

[in] PrivateData

指向包含要存储的专用数据的 LSA_UNICODE_STRING 结构的指针。 函数在存储此数据之前对其进行加密。

如果此参数为 NULL,则该函数将删除存储在密钥下的任何私有数据,并删除密钥。 后续尝试从密钥检索数据将返回STATUS_OBJECT_NAME_NOT_FOUND错误代码。

返回值

如果函数成功,则返回值STATUS_SUCCESS。

如果函数失败,则返回值为 NTSTATUS 代码。 有关详细信息,请参阅 LSA 策略函数返回值

可以使用 LsaNtStatusToWinError 函数将 NTSTATUS 代码转换为 Windows 错误代码。

注解

服务器应用程序可以使用 LsaStorePrivateData 函数来存储客户端和计算机密码。

专用数据对象中所述,专用数据对象包括三种专用类型:本地、全局和计算机。 专用对象由键名称中的前缀标识:“L$”表示本地对象,“G$”表示全局对象,“M$”表示计算机对象。 无法远程访问本地对象。 计算机对象只能由操作系统访问。

除了这些前缀之外,以下值还指示本地对象或计算机对象。 支持这些值以实现向后兼容性,在创建新的本地或计算机对象时不应使用这些值。 本地专用数据对象的密钥名称也可以是“$machine.acc”、“SAC”、“SAI”、“SANSC”,或者以“RasDialParms”或“RasCredentials”开头。 计算机对象的键名称也可以以“NL$”或“sc”开头。

不使用上述任何密钥名称约定的私有数据对象可以远程访问,并且不会复制到其他域。

LsaStorePrivateData 函数存储的数据不受绝对保护。 但是,数据在存储前会加密,密钥具有 DACL ,仅允许创建者和管理员读取数据。

使用 LsaRetrievePrivateData 函数检索 LsaStorePrivateData 存储的值。

要求

要求
最低受支持的客户端 Windows XP [仅限桌面应用]
最低受支持的服务器 Windows Server 2003 [仅限桌面应用]
目标平台 Windows
标头 ntsecapi.h
Library Advapi32.lib
DLL Advapi32.dll

另请参阅

LSA_UNICODE_STRING

LsaRetrievePrivateData