Как установить разрешение доступа к файлам для сканирования всех файлов в C # - PullRequest
1 голос
/ 11 декабря 2011

Я пытаюсь написать функциональность, где я мог бы получить полный список всех имен файлов на всех дисках, но я застрял в месте, где это дает мне исключение безопасности для чтения всех файлов. Я просмотрел многие статьи на этом и другом сайтах, но не смог понять, как установить полные права доступа

этот пост был очень полезен, но я получаю исключение, которое оставалось без ответа в этой теме

Как предоставить доступ на чтение всем файлам в папке и подпапках с помощью 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, достаточно просто создать файлы, созданные пользователем)

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...