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 |
程式庫 | Advapi32.lib |
Dll | Advapi32.dll |