private static Sid[] GetCapabilities(Sid package_sid, INET_FIREWALL_AC_CAPABILITIES caps) { Sid package_cap = new Sid(SecurityAuthority.Package, 3).CreateRelative(package_sid.SubAuthorities.Skip(1).ToArray()); if (caps.count == 0) { return(new Sid[0]); } return(NtProcess.Current.ReadMemoryArray <SidAndAttributes>(caps.capabilities.ToInt64(), caps.count).Select(s => new Sid(s.Sid)).Where(s => s != package_cap).ToArray()); }
private static List <SID_AND_ATTRIBUTES> getContainerSID(INET_FIREWALL_AC_CAPABILITIES cap) { List <SID_AND_ATTRIBUTES> mycap = new List <SID_AND_ATTRIBUTES>(); IntPtr arrayValue = cap.capabilities; var structSize = Marshal.SizeOf(typeof(SID_AND_ATTRIBUTES)); for (var i = 0; i < cap.count; i++) { var cur = (SID_AND_ATTRIBUTES)Marshal.PtrToStructure(arrayValue, typeof(SID_AND_ATTRIBUTES)); mycap.Add(cur); arrayValue = new IntPtr((long)(arrayValue) + (long)(structSize)); } return(mycap); }
private static List<SID_AND_ATTRIBUTES> getContainerSID(INET_FIREWALL_AC_CAPABILITIES cap) { List<SID_AND_ATTRIBUTES> mycap = new List<SID_AND_ATTRIBUTES>(); IntPtr arrayValue = cap.capabilities; var structSize = Marshal.SizeOf(typeof(SID_AND_ATTRIBUTES)); for (var i = 0; i < cap.count; i++) { var cur = (SID_AND_ATTRIBUTES)Marshal.PtrToStructure(arrayValue, typeof(SID_AND_ATTRIBUTES)); mycap.Add(cur); arrayValue = new IntPtr((long)(arrayValue) + (long)(structSize)); } return mycap; }