public void AccessCheckByTypeResultListTest()
 {
     using (var pSD = AdvApi32Tests.GetSD(AdvApi32Tests.fn, SECURITY_INFORMATION.DACL_SECURITY_INFORMATION | SECURITY_INFORMATION.OWNER_SECURITY_INFORMATION | SECURITY_INFORMATION.GROUP_SECURITY_INFORMATION))
         using (var hTok = SafeHTOKEN.FromProcess(GetCurrentProcess(), TokenAccess.TOKEN_IMPERSONATE | TokenAccess.TOKEN_DUPLICATE | TokenAccess.TOKEN_READ).Duplicate(SECURITY_IMPERSONATION_LEVEL.SecurityImpersonation))
         {
             var         ps         = PRIVILEGE_SET.InitializeWithCapacity(100);
             var         psSz       = ps.SizeInBytes;
             var         gm         = GENERIC_MAPPING.GenericFileMapping;
             ACCESS_MASK accessMask = ACCESS_MASK.GENERIC_READ;
             MapGenericMask(ref accessMask, gm);
             var otl    = new[] { new OBJECT_TYPE_LIST(ObjectTypeListLevel.ACCESS_OBJECT_GUID) };
             var access = new uint[otl.Length];
             var status = new uint[otl.Length];
             Assert.That(AccessCheckByTypeResultList(pSD, default, hTok, accessMask, otl, (uint)otl.Length, gm, ps, ref psSz, access, status), ResultIs.Successful);
Exemple #2
0
 public void AccessCheckTest()
 {
     using (var pSD = GetSD(fn, SECURITY_INFORMATION.DACL_SECURITY_INFORMATION | SECURITY_INFORMATION.OWNER_SECURITY_INFORMATION | SECURITY_INFORMATION.GROUP_SECURITY_INFORMATION))
         using (var hTok = SafeHTOKEN.FromProcess(GetCurrentProcess(), TokenAccess.TOKEN_IMPERSONATE | TokenAccess.TOKEN_DUPLICATE | TokenAccess.TOKEN_READ).Duplicate(SECURITY_IMPERSONATION_LEVEL.SecurityImpersonation))
         {
             var ps         = PRIVILEGE_SET.InitializeWithCapacity(10);
             var psSz       = ps.SizeInBytes;
             var gm         = GENERIC_MAPPING.GenericFileMapping;
             var accessMask = (uint)Kernel32.FileAccess.GENERIC_READ;
             MapGenericMask(ref accessMask, gm);
             var b = AccessCheck(pSD, hTok, accessMask, gm, ref ps, ref psSz, out var access, out var status);
             if (!b)
             {
                 TestContext.WriteLine($"AccessCheck failed: {Win32Error.GetLastError()}");
             }
             Assert.That(b, Is.True);
             TestContext.WriteLine($"Access={(Kernel32.FileAccess)access}; Status={status}");
         }
 }