/
githubmirror
/
Files
Обзор
Документация
Войти
/
githubmirror
/
Files
Код
Запросы
0
Пакеты
0
Релизы
0
Аналитика
Безопасность
main
src/Files.App/Data/Factories/SecurityAdvancedAccessControlItemFactory.cs
208 строк
6 KB
yair100
Fix: Fixed issue where no error was displayed when opening corrupted exe (#18721)
15 июл 2026, 23:06
Не верифицирован
15 июл 2026, 23:06
8674d76
Код
Авторство
О чём код?
// Copyright (c) Files Community // Licensed under the MIT License. namespace Files.App.Data.Factories { public static class SecurityAdvancedAccessControlItemFactory { /// <summary> /// Returned list list will be shown in an ACE item in security advanced page /// </summary> /// <param name="current"></param> /// <param name="isAdvanced"></param> /// <param name="isInherited"></param> /// <param name="isFolder"></param> /// <returns></returns> public static ObservableCollection<AccessMaskItem> Initialize(AccessControlEntry current, bool isAdvanced, bool isInherited, bool isFolder) { List<AccessMaskItem> accessControls; if (isAdvanced) { accessControls = [ new(current) { AccessMask = AccessMaskFlags.FullControl, AccessMaskName = Strings.SecurityFullControlLabel_Text.GetLocalizedResource(), IsEditable = !isInherited }, new(current) { AccessMask = AccessMaskFlags.Traverse, AccessMaskName = Strings.SecurityTraverseLabelText.GetLocalizedResource(), IsEditable = !isInherited }, new(current) { AccessMask = AccessMaskFlags.ExecuteFile, AccessMaskName = Strings.SecurityExecuteFileLabelText.GetLocalizedResource(), IsEditable = !isInherited }, new(current) { AccessMask = AccessMaskFlags.ListDirectory, AccessMaskName = Strings.SecurityListDirectoryLabel_Text.GetLocalizedResource(), IsEditable = !isInherited }, new(current) { AccessMask = AccessMaskFlags.ReadData, AccessMaskName = Strings.SecurityReadDataLabelText.GetLocalizedResource(), IsEditable = !isInherited }, new(current) { AccessMask = AccessMaskFlags.ReadAttributes, AccessMaskName = Strings.SecurityReadAttributesLabelText.GetLocalizedResource(), IsEditable = !isInherited }, new(current) { AccessMask = AccessMaskFlags.ReadExtendedAttributes, AccessMaskName = Strings.SecurityReadExtendedAttributesLabelText.GetLocalizedResource(), IsEditable = !isInherited }, new(current) { AccessMask = AccessMaskFlags.CreateFiles, AccessMaskName = Strings.SecurityCreateFilesLabelText.GetLocalizedResource(), IsEditable = !isInherited }, new(current) { AccessMask = AccessMaskFlags.CreateDirectories, AccessMaskName = Strings.SecurityCreateDirectoriesLabelText.GetLocalizedResource(), IsEditable = !isInherited }, new(current) { AccessMask = AccessMaskFlags.WriteData, AccessMaskName = Strings.SecurityWriteDataLabelText.GetLocalizedResource(), IsEditable = !isInherited }, new(current) { AccessMask = AccessMaskFlags.AppendData, AccessMaskName = Strings.SecurityAppendDataLabelText.GetLocalizedResource(), IsEditable = !isInherited }, new(current) { AccessMask = AccessMaskFlags.WriteAttributes, AccessMaskName = Strings.SecurityWriteAttributesLabelText.GetLocalizedResource(), IsEditable = !isInherited }, new(current) { AccessMask = AccessMaskFlags.WriteExtendedAttributes, AccessMaskName = Strings.SecurityWriteExtendedAttributesLabelText.GetLocalizedResource(), IsEditable = !isInherited }, new(current) { AccessMask = AccessMaskFlags.DeleteSubdirectoriesAndFiles, AccessMaskName = Strings.SecurityDeleteSubdirectoriesAndFilesLabelText.GetLocalizedResource(), IsEditable = !isInherited }, new(current) { AccessMask = AccessMaskFlags.Delete, AccessMaskName = Strings.Delete.GetLocalizedResource(), IsEditable = !isInherited }, new(current) { AccessMask = AccessMaskFlags.ReadPermissions, AccessMaskName = Strings.SecurityReadPermissionsLabelText.GetLocalizedResource(), IsEditable = !isInherited }, new(current) { AccessMask = AccessMaskFlags.ChangePermissions, AccessMaskName = Strings.SecurityChangePermissionsLabelText.GetLocalizedResource(), IsEditable = !isInherited }, new(current) { AccessMask = AccessMaskFlags.TakeOwnership, AccessMaskName = Strings.SecurityTakeOwnershipLabelText.GetLocalizedResource(), IsEditable = !isInherited } ]; if (isFolder) { accessControls.RemoveAll(x => x.AccessMask == AccessMaskFlags.ExecuteFile || x.AccessMask == AccessMaskFlags.ReadData || x.AccessMask == AccessMaskFlags.WriteData || x.AccessMask == AccessMaskFlags.AppendData); } else { accessControls.RemoveAll(x => x.AccessMask == AccessMaskFlags.Traverse || x.AccessMask == AccessMaskFlags.ListDirectory || x.AccessMask == AccessMaskFlags.CreateFiles || x.AccessMask == AccessMaskFlags.CreateDirectories || x.AccessMask == AccessMaskFlags.DeleteSubdirectoriesAndFiles); } } else { accessControls = [ new(current) { AccessMask = AccessMaskFlags.FullControl, AccessMaskName = Strings.SecurityFullControlLabel_Text.GetLocalizedResource(), IsEditable = !isInherited }, new(current) { AccessMask = AccessMaskFlags.Modify, AccessMaskName = Strings.Modify.GetLocalizedResource(), IsEditable = !isInherited }, new(current) { AccessMask = AccessMaskFlags.ReadAndExecute, AccessMaskName = Strings.SecurityReadAndExecuteLabel_Text.GetLocalizedResource(), IsEditable = !isInherited }, new(current) { AccessMask = AccessMaskFlags.ListDirectory, AccessMaskName = Strings.SecurityListDirectoryLabel_Text.GetLocalizedResource(), IsEditable = !isInherited }, new(current) { AccessMask = AccessMaskFlags.Read, AccessMaskName = Strings.SecurityReadLabel_Text.GetLocalizedResource(), IsEditable = !isInherited }, new(current) { AccessMask = AccessMaskFlags.Write, AccessMaskName = Strings.Write.GetLocalizedResource(), IsEditable = !isInherited }, new(current, false) { AccessMaskName = Strings.SecuritySpecialLabelText.GetLocalizedResource() } ]; if (!isFolder) { accessControls.RemoveAll(x => x.AccessMask == AccessMaskFlags.ListDirectory); } } return new ObservableCollection<AccessMaskItem>(accessControls); } } }