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

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

如何使用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

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

4回复

在asp.net中的会话

我在asp.net C#页面中创建了一个会话,我在这样的会话中存储用户的uniqueid, 并检查每个页面上的唯一ID,如果session为null,则重定向。 但是,如果我将用户当前的URL复制到IE的其他选项卡中,则不会重定向到登录页面。 而是在浏览器子选项卡之间维护会话。
2回复

C#加密和解密

在c#.net中,当我尝试解密文件时,它向我显示此错误,但可用于加密。 错误:该进程无法访问文件SecureDownloadManager.log,因为它正在被另一个进程使用 码:
1回复

如何通过C#处理代理

我有一个用C#编写的Word AddIn,它通过HTTPwebrequest连接到服务器以获取数据 当用户从一个代理(家庭)切换到另一个代理(办公室)时,加载项仍会记住旧的代理(即家庭代理),并且在这种情况下无法连接到服务器。 所以我打开提琴手检查它为什么失败。 然后我的插件开始工
2回复

如何为c#中的文件夹授予权限?

我需要使用c#给文件夹“Temporary ASP.NET Files”一个写权限,然后我使用这段代码给它访问权限 当我在实现代码后检查文件夹“Temporary ASP.NET Files”的安全属性时,它没有检查“write”权限复选框,而是检查了“特殊权限”一个...我注意到,即使
1回复

SQL查询以选择目录,然后删除其中的所有文件-C#

我需要删除目录中的所有文件(由于图库脚本会保留完整尺寸的图像,但未使用它们!)。 我编写了一些代码,将查询转储到DataTable中,然后遍历记录。 但是,当我引入查找所有文件并删除它们的循环时,它似乎仅针对第一个SiteID运行。 至少应扫描350个目录,但仅扫描第一个SiteID(
3回复

在C#中处理大型文本文件

我有4GB +文本文件(csv格式),我想在c#中使用linq处理这个文件。 我在加载csv后运行复杂的linq查询并转换为类? 但是文件大小是4GB,尽管应用程序内存是文件的双倍大小。 我如何处理(linq和新结果)大文件? 谢谢
1回复

具有受限数据库访问权限的SQL Server和C#的安全性实践

我有一个正在进行的项目,该项目本质上是用于客户端计算机的自助数据库恢复/备份工具,该客户端计算机在其计算机上本地运行数据库并包含敏感信息。 由于业务的性质以及我们拥有的客户数量,我根本无法创建要与正在创建的程序一起在数据库上使用的存储过程。 我知道以字符串格式使用原始SQL语句很容易受到
1回复

该进程无法访问文件,因为该文件正被另一个进程C#使用

我有一个.Net控制台应用程序。 我想捕获执行期间发生的任何异常,并将其写入文本文件。 如果以前在文件上有任何条目,我正在 该进程无法访问该文件,因为该文件正在被另一个进程使用。 我试着关闭下面的连接,但仍然显示相同的错误。 注意:在程序执行开始时,我将删除文件并在
2回复

直接从内存中处理C#中的内存映射文件

是否可以直接在C#中打开内存映射文件,就像在Windows中直接打开文件一样,例如,我正在创建内存映射文件。 通过以下代码。 我需要直接打开文件。 是否有可能像打开文件一样 Process.start("test.txt"); 从另一个进程而不是通过代码读取值。
2回复

从C#中的xml文件获取重复节点的信息

我有一个xml文件,如下所示: 我需要一个字符串列表中的所有父母,我尝试使用 因此,“文件”变量仅包含“ AAA”, reader.ReadElementContentAsString()不接受List。 有没有办法将输出提取为{“AAA”,”BBB”,”CCC”,