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);
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);
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);
public static extern int PrivilegeCheck([NativeTypeName("HANDLE")] IntPtr ClientToken, [NativeTypeName("PPRIVILEGE_SET")] PRIVILEGE_SET *RequiredPrivileges, [NativeTypeName("LPBOOL")] int *pfResult);
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);
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);
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);
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);
public static extern BOOL PrivilegedServiceAuditAlarmW([NativeTypeName("LPCWSTR")] ushort *SubsystemName, [NativeTypeName("LPCWSTR")] ushort *ServiceName, HANDLE ClientToken, [NativeTypeName("PPRIVILEGE_SET")] PRIVILEGE_SET *Privileges, BOOL AccessGranted);
public static extern BOOL PrivilegeCheck(HANDLE ClientToken, [NativeTypeName("PPRIVILEGE_SET")] PRIVILEGE_SET *RequiredPrivileges, [NativeTypeName("LPBOOL")] BOOL *pfResult);