1818namespace NtApiDotNet
1919{
2020 /// <summary>
21- /// Result of an access check with specific access types. This is an extension with
22- /// generic granted access masks.
21+ /// Result of an access check with specific access types.
2322 /// </summary>
24- /// <typeparam name="T">The access rights type.</typeparam>
23+ /// <typeparam name="T">The access rights type, must be derived from an Enum .</typeparam>
2524 public class AccessCheckResult < T > where T : Enum
2625 {
2726 /// <summary>
@@ -49,13 +48,17 @@ public class AccessCheckResult<T> where T : Enum
4948 /// </summary>
5049 public T SpecificGenericGrantedAccess { get ; }
5150 /// <summary>
51+ /// Object type associated with the access.
52+ /// </summary>
53+ public Guid ObjectType { get ; }
54+ /// <summary>
5255 /// Get access check result as a specific access.
5356 /// </summary>
5457 /// <returns>The specific access results.</returns>
5558 public AccessCheckResult < U > ToSpecificAccess < U > ( ) where U : Enum
5659 {
5760 return new AccessCheckResult < U > ( Status , GrantedAccess , GenericGrantedAccess , PrivilegesRequired ,
58- GrantedAccess . ToSpecificAccess < U > ( ) , GenericGrantedAccess . ToSpecificAccess < U > ( ) ) ;
61+ GrantedAccess . ToSpecificAccess < U > ( ) , GenericGrantedAccess . ToSpecificAccess < U > ( ) , ObjectType ) ;
5962 }
6063 /// <summary>
6164 /// Get access check result as a specific access.
@@ -65,17 +68,20 @@ public AccessCheckResult<Enum> ToSpecificAccess(Type specific_access_type)
6568 {
6669 return new AccessCheckResult < Enum > ( Status , GrantedAccess , GenericGrantedAccess , PrivilegesRequired ,
6770 GrantedAccess . ToSpecificAccess ( specific_access_type ) ,
68- GenericGrantedAccess . ToSpecificAccess ( specific_access_type ) ) ;
71+ GenericGrantedAccess . ToSpecificAccess ( specific_access_type ) ,
72+ ObjectType ) ;
6973 }
7074
7175 internal AccessCheckResult ( NtStatus status ,
7276 AccessMask granted_access ,
7377 AccessMask generic_granted_access ,
74- IEnumerable < TokenPrivilege > privilege_required )
78+ IEnumerable < TokenPrivilege > privilege_required ,
79+ Guid object_type )
7580 : this ( status , granted_access ,
7681 generic_granted_access , privilege_required ,
7782 granted_access . ToSpecificAccess < T > ( ) ,
78- generic_granted_access . ToSpecificAccess < T > ( ) )
83+ generic_granted_access . ToSpecificAccess < T > ( ) ,
84+ object_type )
7985 {
8086 }
8187
@@ -84,14 +90,16 @@ internal AccessCheckResult(NtStatus status,
8490 AccessMask generic_granted_access ,
8591 IEnumerable < TokenPrivilege > privilege_required ,
8692 T specific_granted_access ,
87- T specific_generic_granted_access )
93+ T specific_generic_granted_access ,
94+ Guid object_type )
8895 {
8996 Status = status ;
9097 GrantedAccess = granted_access ;
9198 GenericGrantedAccess = generic_granted_access ;
9299 PrivilegesRequired = privilege_required ;
93100 SpecificGrantedAccess = specific_granted_access ;
94101 SpecificGenericGrantedAccess = specific_generic_granted_access ;
102+ ObjectType = object_type ;
95103 }
96104 }
97105
@@ -103,22 +111,25 @@ public class AccessCheckResult : AccessCheckResult<GenericAccessRights>
103111 internal AccessCheckResult ( NtStatus status ,
104112 AccessMask granted_access ,
105113 SafePrivilegeSetBuffer privilege_set ,
106- GenericMapping generic_mapping )
114+ GenericMapping generic_mapping ,
115+ Guid object_type )
107116 : this ( status , granted_access ,
108117 generic_mapping . UnmapMask ( granted_access ) ,
109- privilege_set ? . GetPrivileges ( ) ?? new TokenPrivilege [ 0 ] )
118+ privilege_set ? . GetPrivileges ( ) ?? new TokenPrivilege [ 0 ] ,
119+ object_type )
110120 {
111121 }
112122
113123 internal AccessCheckResult (
114124 NtStatus status ,
115125 AccessMask granted_access ,
116126 AccessMask generic_granted_access ,
117- IEnumerable < TokenPrivilege > privilege_required )
127+ IEnumerable < TokenPrivilege > privilege_required ,
128+ Guid object_type )
118129 : base ( status , granted_access , generic_granted_access , privilege_required ,
119- granted_access . ToGenericAccess ( ) , generic_granted_access . ToGenericAccess ( ) )
130+ granted_access . ToGenericAccess ( ) , generic_granted_access . ToGenericAccess ( ) ,
131+ object_type )
120132 {
121133 }
122134 }
123-
124135}
0 commit comments