예제 #1
0
        public static RawSecurityDescriptor MarshalToManagedSecurityDescriptor(IntPtr ptrSecDesc)
        {
            if (ptrSecDesc == IntPtr.Zero)
            {
                return(null);
            }
            ControlFlags       controlFlags;
            SecurityIdentifier owner, group;
            RawAcl             sacl, dacl;

            unsafe
            {
                STRUCT_SECURITY_DESCRIPTOR *pSecDesc = (STRUCT_SECURITY_DESCRIPTOR *)ptrSecDesc.ToPointer();
                controlFlags = (ControlFlags)pSecDesc->Control;
                owner        = SID.MarshalToManagedSid(pSecDesc->Owner);
                group        = SID.MarshalToManagedSid(pSecDesc->Group);
                sacl         = ACL.MarshalToManagedAcl(pSecDesc->Sacl);
                dacl         = ACL.MarshalToManagedAcl(pSecDesc->Dacl);
            }
            return(new RawSecurityDescriptor(controlFlags, owner, group, sacl, dacl));
        }
예제 #2
0
 public SecurityIdentifier MarshalPrincipalSelfSidToManaged() =>
 SID.MarshalToManagedSid(PrincipalSelfSid);
예제 #3
0
 public SecurityIdentifier MarshalSidToManaged() =>
 SID.MarshalToManagedSid(Sid);
예제 #4
0
 public unsafe SecurityIdentifier MarshalAppContainerSidToManagedSid() =>
 SID.MarshalToManagedSid(new IntPtr(AppContainerSid));
 public SecurityIdentifier MarshalTrustLevelSidToManaged() =>
 SID.MarshalToManagedSid(TrustLevelSid);
예제 #6
0
 public SecurityIdentifier MarshalOwnerToManaged() =>
 SID.MarshalToManagedSid(Owner);
예제 #7
0
 public SecurityIdentifier MarshalTokenAppContainerToManaged() =>
 SID.MarshalToManagedSid(TokenAppContainer);
예제 #8
0
 public SecurityIdentifier MarshalPrimaryGroupToManaged() =>
 SID.MarshalToManagedSid(PrimaryGroup);