共用方式為


IEffectivePermission2::ComputeEffectivePermissionWithSecondarySecurity 方法 (aclui.h)

ComputeEffectivePermissionWithSecondarySecurity 方法會計算物件的有效許可權。 它支援整合次要或自定義安全策略。 您可以選擇藉由實作 ISecurityInformation4 介面來提供這項額外的安全性資訊。 這個方法支持複合身分識別,也就是主體的存取令牌包含使用者和裝置授權資訊時。

語法

HRESULT ComputeEffectivePermissionWithSecondarySecurity(
  [in]           PSID                                   pSid,
  [in, optional] PSID                                   pDeviceSid,
  [in, optional] PCWSTR                                 pszServerName,
  [in]           PSECURITY_OBJECT                       pSecurityObjects,
  [in]           DWORD                                  dwSecurityObjectCount,
  [in, optional] PTOKEN_GROUPS                          pUserGroups,
  [in, optional] PAUTHZ_SID_OPERATION                   pAuthzUserGroupsOperations,
  [in, optional] PTOKEN_GROUPS                          pDeviceGroups,
  [in, optional] PAUTHZ_SID_OPERATION                   pAuthzDeviceGroupsOperations,
  [in, optional] PAUTHZ_SECURITY_ATTRIBUTES_INFORMATION pAuthzUserClaims,
  [in, optional] PAUTHZ_SECURITY_ATTRIBUTE_OPERATION    pAuthzUserClaimsOperations,
  [in, optional] PAUTHZ_SECURITY_ATTRIBUTES_INFORMATION pAuthzDeviceClaims,
  [in, optional] PAUTHZ_SECURITY_ATTRIBUTE_OPERATION    pAuthzDeviceClaimsOperations,
  [in, out]      PEFFPERM_RESULT_LIST                   pEffpermResultLists
);

參數

[in] pSid

SID 結構的指標,表示正在判斷有效許可權的安全性主體。

[in, optional] pDeviceSid

SID 結構的指標,表示主體從中存取 物件的裝置。 如果這不是 NULL,而且您使用 AuthzAccessCheck 函式來計算有效許可權,則裝置 SID 可能會使用 AuthzInitializeCompoundContext 函式來複合使用 pSid 參數。

[in, optional] pszServerName

物件所在的伺服器名稱。 這是從 ISecurityInformation::GetObjectInformation 方法傳回的相同名稱。

[in] pSecurityObjects

安全性對象的陣列。 除了從 ISecurityInformation4::GetSecondarySecurity 方法傳回的物件之外,此數位是由訪問控制編輯器所引發的物件所組成。

[in] dwSecurityObjectCount

pSecurityObjects 參數中的安全性對象數目,以及 pEffpermResultLists 參數中的結果清單數目。

[in, optional] pUserGroups

其他使用者群組的指標,應該用來修改從 pSid 參數初始化的安全性內容。 如果您使用 AuthzAccessCheck 函式來計算有效許可權,則可以使用 AuthzContextInfoGroupsSids 作為 SidClass 參數呼叫 AuthzModifySids 函式來完成修改。

[in, optional] pAuthzUserGroupsOperations

AUTHZ_SID_OPERATION結構的陣列指標,指定 pUserGroups 自變數中每個使用者群組必須修改 authz 內容中的使用者群組的方式。 此陣列包含的元素數目與 pUserGroups 參數中的群組數目一樣多。

[in, optional] pDeviceGroups

其他裝置群組的指標,應該用來修改從 pSid 參數初始化的安全性內容,或透過複合從 pSidpDeviceSid 參數初始化的內容所建立的安全性內容。 如果您使用 AuthzAccessCheck 函式來計算有效許可權,則可以使用 AuthzContextInfoDeviceSids 作為 SidClass 參數呼叫 AuthzModifySids 函式來完成修改。

[in, optional] pAuthzDeviceGroupsOperations

AUTHZ_SID_OPERATION列舉型別數位的指標,指定 pDeviceGroups 自變數中每個裝置群組必須修改 authz 內容中的裝置群組的方式。 此陣列包含 pDeviceGroups 參數中群組數目的元素數目。

[in, optional] pAuthzUserClaims

AUTHZ_SECURITY_ATTRIBUTES_INFORMATION 結構的指標,其中包含應該用來修改從 pSid 參數初始化的安全性內容的使用者宣告內容。 如果您使用 AuthzAccessCheck 函式來計算有效許可權,則可以使用 AuthzContextInfoUserClaims 作為 ClaimClass 參數呼叫 AuthzModifyClaims 函式來完成修改。

[in, optional] pAuthzUserClaimsOperations

AUTHZ_SECURITY_ATTRIBUTE_OPERATION列舉類型的指標,指定與使用者宣告內容相關聯的作業。

[in, optional] pAuthzDeviceClaims

裝置宣告內容的指標,應該用來修改從 pSid 參數初始化的安全性內容,或透過複合從 pSidpDeviceSid 參數初始化的內容所建立的安全性內容。 即使 pDeviceSid 參數不是,呼叫端也可能提供這個參數。 如果您使用 AuthzAccessCheck 函式來計算有效許可權,則可以使用 AuthzContextInfoDeviceClaims 作為 ClaimClass 參數呼叫 AuthzModifyClaims 函式來完成修改。

[in, optional] pAuthzDeviceClaimsOperations

AUTHZ_SECURITY_ATTRIBUTE_OPERATION列舉類型的指標,指定與裝置宣告內容相關聯的作業。

[in, out] pEffpermResultLists

類型 EFFPERM_RESULT_LIST之有效許可權結果陣列的指標。 此陣列為 dwSecurityObjectCount 元素長。 數位是由呼叫端初始化,而且實作預期會設定陣列中每個成員的所有欄位,指出對應的安全性物件授與了哪些存取權。

如果考慮安全性物件, fEvaluated 成員應該設定為 TRUE。 在此情況下, pObjectTypeListpGrantedAccessList 成員都應該是 cObjectTypeListLength 元素長。 pObjectTypeList 成員必須指向資源管理員所擁有的記憶體,而且必須維持有效狀態,直到EditSecurity函式結束為止。 pGrantedAccessList 成員是由呼叫端使用LocalFree函式釋出。 如果資源管理員不支援物件 ACE,則 pObjectTypeList 成員應該指向 NULL GUID,cObjectTypeListLength 成員應該是 1,而 pGrantedAccessList 成員應該是單一 DWORD。

傳回值

如果函式成功,傳回值會S_OK。

如果函式成功但傳回近似結果,則會S_FALSE傳回值。

如果函式失敗,傳回值為表示錯誤的 HRESULT 。 如需常見錯誤碼的清單,請參閱 一般 HRESULT 值

備註

SECURITY_OBJECT結構的Id成員設定為SECURITY_OBJECT_ID_CENTRAL_ACCESS_RULE時,ComputeEffectivePermissionWithSecondarySecurity 方法應該先使用 pData2 成員,然後才使用 pData 成員來評估存取權。

呼叫端預期會使用 AuthzAccessCheck 來判斷有效許可權。 可能的話,實作應該使用 AuthzInitializeRemoteResourceManager 函式,在提供的 pszServerName 成員上初始化遠端資源管理員,以確保群組和宣告的初始化方式與主體存取物件的方式相同。 如果 AuthzInitializeRemoteResourceManager 失敗,實作可能會回復為使用 AuthzInitializeResourceManager 函式,並傳回S_FALSE以指出傳回近似結果。

針對 fEvaluated 成員設定為 TRUE 的每個次要安全性物件,訪問控制編輯器會顯示使用 pwszName 成員限制該物件的許可權和屬性。

規格需求

需求
最低支援的用戶端 Windows 8 [僅限傳統型應用程式]
最低支援的伺服器 Windows Server 2012 [僅限傳統型應用程式]
目標平台 Windows
標頭 aclui.h

另請參閱

AUTHZ_SECURITY_ATTRIBUTE_OPERATION

AuthzInitializeRemoteResourceManager

IEffectivePermission2

ISecurityInformation4::GetSecondarySecurity

SECURITY_OBJECT