Я пытаюсь написать функциональность, где я мог бы получить полный список всех имен файлов на всех дисках, но я застрял в месте, где это дает мне исключение безопасности для чтения всех файлов.
Я просмотрел многие статьи на этом и другом сайтах, но не смог понять, как установить полные права доступа
этот пост был очень полезен, но я получаю исключение, которое оставалось без ответа в этой теме
Как предоставить доступ на чтение всем файлам в папке и подпапках с помощью c #?
Теперь мой код выглядит так
[FileIOPermission(SecurityAction.LinkDemand, Read = "C:\\")]
public void GetAllFilesFromPhysicalDrives()
{
List<DriveInfo> allphydrives = GetListofPhysicalDrivesOnly(); //Gets All Physical DrivesCollection
try
{
foreach (DriveInfo dr in allphydrives)
{
DirectoryInfo dir = new DirectoryInfo(dr.Name);
DirectorySecurity dirSecurity = dir.GetAccessControl();
dirSecurity.AddAccessRule(new FileSystemAccessRule(Environment.UserName, FileSystemRights.Read, AccessControlType.Allow));
dir.SetAccessControl(dirSecurity);
FileSystemAccessRule faRule;
FileSystemRights fsrRights;
DirectorySecurity dirsec;
fsrRights = FileSystemRights.FullControl;
faRule = new FileSystemAccessRule(new System.Security.Principal.NTAccount("my-pc\\me"),fsrRights,InheritanceFlags.ObjectInherit | InheritanceFlags.ContainerInherit,PropagationFlags.InheritOnly, AccessControlType.Allow);
System.Security.Principal.NTAccount account = new System.Security.Principal.NTAccount("me\\me");
dirsec = Directory.GetAccessControl("C:\\");
dirsec.SetOwner(account);
dirsec.AddAccessRule(faRule);
Directory.SetAccessControl("C:\\", dirsec);
}
}
catch(Exception ex)
{
}
}
поэтому при выполнении кода для установки доступа я получаю «Попытка выполнить несанкционированную операцию» Исключение
Я не хочу устанавливать разрешение для файлов один за другим, потому что это утомительное занятие, помогите мне, что произойдет динамически через код для всех папок, чтобы я мог выполнять итерации и получать все имена файлов (я не собираюсь чтобы получить файлы, связанные с windows или kernal, достаточно просто создать файлы, созданные пользователем)