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 參數初始化的安全性內容,或透過複合從 pSid 和 pDeviceSid 參數初始化的內容所建立的安全性內容。 如果您使用 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 參數初始化的安全性內容,或透過複合從 pSid 和 pDeviceSid 參數初始化的內容所建立的安全性內容。 即使 pDeviceSid 參數不是,呼叫端也可能提供這個參數。 如果您使用 AuthzAccessCheck 函式來計算有效許可權,則可以使用 AuthzContextInfoDeviceClaims 作為 ClaimClass 參數呼叫 AuthzModifyClaims 函式來完成修改。
[in, optional] pAuthzDeviceClaimsOperations
AUTHZ_SECURITY_ATTRIBUTE_OPERATION列舉類型的指標,指定與裝置宣告內容相關聯的作業。
[in, out] pEffpermResultLists
類型 EFFPERM_RESULT_LIST之有效許可權結果陣列的指標。 此陣列為 dwSecurityObjectCount 元素長。 數位是由呼叫端初始化,而且實作預期會設定陣列中每個成員的所有欄位,指出對應的安全性物件授與了哪些存取權。
如果考慮安全性物件, fEvaluated 成員應該設定為 TRUE。 在此情況下, pObjectTypeList 和 pGrantedAccessList 成員都應該是 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