Share via


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

另請參閱

LSA_UNICODE_STRING

LsaRetrievePrivateData