我正在尝试编写一种功能,可以在所有驱动器中获得所有文件名的完整列表,但是我被困在一个给我提供读取所有文件的安全例外的地方。 我浏览了本网站上的许多文章以及其他文章,但无法弄清楚如何设置完整的访问权限

这篇文章非常有用,但是我收到一个异常,该异常在该线程中没有得到答复。

如何使用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相关文件或核心文件,只要用户创建的文件就足够了)

  ask by Dilip translate from so

本文未有回复,本站智能推荐:

关注微信公众号