private unsafe static bool ArePrivilegesEnabled(AccessToken token, bool all, Privilege[] privileges)
        {
            if (privileges == null || privileges.Length == 0)
            {
                return(true);
            }

            byte *         buffer = stackalloc byte[sizeof(PRIVILEGE_SET) + (sizeof(LUID_AND_ATTRIBUTES) * (privileges.Length - 1))];
            PRIVILEGE_SET *set    = (PRIVILEGE_SET *)buffer;

            set->Control        = all ? PRIVILEGE_SET_ALL_NECESSARY : 0;
            set->PrivilegeCount = (uint)privileges.Length;
            Span <LUID_AND_ATTRIBUTES> luids = new Span <LUID_AND_ATTRIBUTES>(&set->Privilege, privileges.Length);

            for (int i = 0; i < privileges.Length; i++)
            {
                luids[i] = new LUID_AND_ATTRIBUTES {
                    Luid = LookupPrivilegeValue(privileges[i])
                };
            }

            if (!Imports.PrivilegeCheck(token, set, out BOOL result))
            {
                throw Errors.GetIoExceptionForLastError();
            }

            return(result);
        }
 public unsafe static extern BOOL PrivilegeCheck(
     AccessToken ClientToken,
     PRIVILEGE_SET *RequiredPrivileges,
     out BOOL pfResult);
示例#3
0
 public static extern HRESULT RsopAccessCheckByType([NativeTypeName("PSECURITY_DESCRIPTOR")] void *pSecurityDescriptor, [NativeTypeName("PSID")] void *pPrincipalSelfSid, [NativeTypeName("PRSOPTOKEN")] void *pRsopToken, [NativeTypeName("DWORD")] uint dwDesiredAccessMask, [NativeTypeName("POBJECT_TYPE_LIST")] OBJECT_TYPE_LIST *pObjectTypeList, [NativeTypeName("DWORD")] uint ObjectTypeListLength, [NativeTypeName("PGENERIC_MAPPING")] GENERIC_MAPPING *pGenericMapping, [NativeTypeName("PPRIVILEGE_SET")] PRIVILEGE_SET *pPrivilegeSet, [NativeTypeName("LPDWORD")] uint *pdwPrivilegeSetLength, [NativeTypeName("LPDWORD")] uint *pdwGrantedAccessMask, [NativeTypeName("LPBOOL")] BOOL *pbAccessStatus);
示例#4
0
 public static extern int PrivilegedServiceAuditAlarmW([NativeTypeName("LPCWSTR")] ushort *SubsystemName, [NativeTypeName("LPCWSTR")] ushort *ServiceName, [NativeTypeName("HANDLE")] IntPtr ClientToken, [NativeTypeName("PPRIVILEGE_SET")] PRIVILEGE_SET *Privileges, [NativeTypeName("BOOL")] int AccessGranted);
示例#5
0
 public static extern int PrivilegeCheck([NativeTypeName("HANDLE")] IntPtr ClientToken, [NativeTypeName("PPRIVILEGE_SET")] PRIVILEGE_SET *RequiredPrivileges, [NativeTypeName("LPBOOL")] int *pfResult);
示例#6
0
 public static extern int ObjectPrivilegeAuditAlarmW([NativeTypeName("LPCWSTR")] ushort *SubsystemName, [NativeTypeName("LPVOID")] void *HandleId, [NativeTypeName("HANDLE")] IntPtr ClientToken, [NativeTypeName("DWORD")] uint DesiredAccess, [NativeTypeName("PPRIVILEGE_SET")] PRIVILEGE_SET *Privileges, [NativeTypeName("BOOL")] int AccessGranted);
示例#7
0
 public static extern int ObjectOpenAuditAlarmW([NativeTypeName("LPCWSTR")] ushort *SubsystemName, [NativeTypeName("LPVOID")] void *HandleId, [NativeTypeName("LPWSTR")] ushort *ObjectTypeName, [NativeTypeName("LPWSTR")] ushort *ObjectName, [NativeTypeName("PSECURITY_DESCRIPTOR")] void *pSecurityDescriptor, [NativeTypeName("HANDLE")] IntPtr ClientToken, [NativeTypeName("DWORD")] uint DesiredAccess, [NativeTypeName("DWORD")] uint GrantedAccess, [NativeTypeName("PPRIVILEGE_SET")] PRIVILEGE_SET *Privileges, [NativeTypeName("BOOL")] int ObjectCreation, [NativeTypeName("BOOL")] int AccessGranted, [NativeTypeName("LPBOOL")] int *GenerateOnClose);
示例#8
0
 public static extern int AccessCheckByTypeResultList([NativeTypeName("PSECURITY_DESCRIPTOR")] void *pSecurityDescriptor, [NativeTypeName("PSID")] void *PrincipalSelfSid, [NativeTypeName("HANDLE")] IntPtr ClientToken, [NativeTypeName("DWORD")] uint DesiredAccess, [NativeTypeName("POBJECT_TYPE_LIST")] OBJECT_TYPE_LIST *ObjectTypeList, [NativeTypeName("DWORD")] uint ObjectTypeListLength, [NativeTypeName("PGENERIC_MAPPING")] GENERIC_MAPPING *GenericMapping, [NativeTypeName("PPRIVILEGE_SET")] PRIVILEGE_SET *PrivilegeSet, [NativeTypeName("LPDWORD")] uint *PrivilegeSetLength, [NativeTypeName("LPDWORD")] uint *GrantedAccessList, [NativeTypeName("LPDWORD")] uint *AccessStatusList);
示例#9
0
 public static extern int AccessCheck([NativeTypeName("PSECURITY_DESCRIPTOR")] void *pSecurityDescriptor, [NativeTypeName("HANDLE")] IntPtr ClientToken, [NativeTypeName("DWORD")] uint DesiredAccess, [NativeTypeName("PGENERIC_MAPPING")] GENERIC_MAPPING *GenericMapping, [NativeTypeName("PPRIVILEGE_SET")] PRIVILEGE_SET *PrivilegeSet, [NativeTypeName("LPDWORD")] uint *PrivilegeSetLength, [NativeTypeName("LPDWORD")] uint *GrantedAccess, [NativeTypeName("LPBOOL")] int *AccessStatus);
示例#10
0
 public static extern BOOL PrivilegedServiceAuditAlarmW([NativeTypeName("LPCWSTR")] ushort *SubsystemName, [NativeTypeName("LPCWSTR")] ushort *ServiceName, HANDLE ClientToken, [NativeTypeName("PPRIVILEGE_SET")] PRIVILEGE_SET *Privileges, BOOL AccessGranted);
示例#11
0
 public static extern BOOL PrivilegeCheck(HANDLE ClientToken, [NativeTypeName("PPRIVILEGE_SET")] PRIVILEGE_SET *RequiredPrivileges, [NativeTypeName("LPBOOL")] BOOL *pfResult);