LsaStorePrivateData 函数 (ntsecapi.h)
请勿使用 LSA 专用数据函数或通用数据加密和解密。 请改用 CryptProtectData 和 CryptUnprotectData 函数。 仅当需要按照机密对象数据模型中所述操作 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 |