SetPrivateObjectSecurity 函式 (securitybaseapi.h)

SetPrivateObjectSecurity 函式會修改私用對象的安全性描述元

若要指定受保護伺服器是否支援 (ACE) 自動繼承 訪問控制專案 ,請使用 SetPrivateObjectSecurityEx 函 式。

語法

BOOL SetPrivateObjectSecurity(
  [in]           SECURITY_INFORMATION SecurityInformation,
  [in]           PSECURITY_DESCRIPTOR ModificationDescriptor,
  [in, out]      PSECURITY_DESCRIPTOR *ObjectsSecurityDescriptor,
  [in]           PGENERIC_MAPPING     GenericMapping,
  [in, optional] HANDLE               Token
);

參數

[in] SecurityInformation

指出要設定的安全性描述元部分。 這個值可以是 SECURITY_INFORMATION 位旗標的組合。

[in] ModificationDescriptor

SECURITY_DESCRIPTOR 結構的指標。 SecurityInformation 參數所指示的這個安全性描述元部分會套用至 ObjectsSecurityDescriptor 安全性描述元。

[in, out] ObjectsSecurityDescriptor

指向SECURITY_DESCRIPTOR結構的指標。 此安全性描述項必須採用 自我相對 形式。 安全性描述元的記憶體必須從進程堆積配置, (GetProcessHeap) 與 HeapAlloc 函式。

在輸入時,這是私用物件目前的安全性描述項。 函式會修改它,以產生新的安全性描述元。 如有必要, SetPrivateObjectSecurity 函式會配置額外的記憶體,以產生較大的安全性描述元。

[in] GenericMapping

GENERIC_MAPPING 結構的指標,指定對應至每個泛型訪問許可權的特定和標準訪問許可權。

[in, optional] Token

代表私用物件之安全性修改之用戶端之 存取令牌 的句柄。 這是必要參數,以確保用戶端已為新的擁有者 安全性標識碼 提供合法值, (SID) 。 令牌必須開啟,才能TOKEN_QUERY存取。

傳回值

如果函式成功,函式會傳回非零。

如果函式失敗,則會傳回零。 若要取得擴充的錯誤資訊,請呼叫 GetLastError

備註

此函式僅供資源管理員使用。 若要實作更新安全性描述元的標準訪問控制語意,資源管理員應該先確認符合下列條件,再呼叫 SetPrivateObjectSecurity

  • 如果要設定對象的擁有者,呼叫 進程 必須具有WRITE_OWNER許可權,或是對象的擁有者。
  • 如果要設定物件的 任意訪問控制清單 (DACL) ,則呼叫進程必須具有WRITE_DAC許可權或對象擁有者。
  • 如果在設定 SACL) (物件的 系統存取控制清單 ,則必須為呼叫程式啟用SE_SECURITY_NAME許可權。
如果不符合上述條件,則此函式的呼叫不會失敗;不過,不會強制執行標準存取原則。

呼叫此函式的進程不應該模擬客戶端,因為用戶端通常沒有基礎令牌作業所需的適當許可權。

規格需求

需求
最低支援的用戶端 Windows XP [僅限傳統型應用程式]
最低支援的伺服器 Windows Server 2003 [僅限桌面應用程式]
目標平台 Windows
標頭 securitybaseapi.h (包含 Windows.h)
程式庫 Advapi32.lib
Dll Advapi32.dll

另請參閱

用戶端/伺服器 存取控制 函式

用戶端/伺服器 存取控制 概觀

CreatePrivateObjectSecurity

DestroyPrivateObjectSecurity

GENERIC_MAPPING

GetPrivateObjectSecurity

SECURITY_DESCRIPTOR

SECURITY_INFORMATION

SetFileSecurity

SetKernelObjectSecurity

SetPrivateObjectSecurityEx

SetUserObjectSecurity