网站导航免费论文 原创论文 论文搜索 原创论文 网学软件 学术大家 资料中心 会员中心 问题解答 原创论文 大学论文导航 设计下载 最新论文 下载排行 原创论文 论文源代码
返回网学首页
网学联系
最新论文 推荐专题 热门论文 素材专题
当前位置: 网学 > 编程文档 > ASP.net > 正文

C#.NET中访问被系统保护的文件夹

来源:http://myeducs.cn 联系QQ:点击这里给我发消息 作者: 用户投稿 来源: 网络 发布时间: 12/12/13

通过C#开发Windows中有很多文件夹是受系统保护的,比如System Volume Information,中文名称可以翻译为“系统卷标信息”,这个文件夹里就存储着系统还原的备份信息。对于这类系统资源,应用程序是无法直接访问其中的子目录和文件的,所以必须让Windows认为我们程序的当前访问是安全的,才能让我们访问,这就要用到System.Security.AccessControl命名空间了,它提供了有关安全访问系统资源的方法。

        下面是C#写的一个获取受保护文件夹的子目录的函数:

  1. //注意添加名称空间的引用:using System.Security.AccessControl;
  2.  
  3. private DirectoryInfo[] GetDirList(DirectoryInfo dirInfo)
  4. {
  5.     if (dirInfo == null || !dirInfo.Exists)
  6.         return null;
  7.     DirectoryInfo[] dirInfos = null;
  8.     try
  9.     {
  10.         //一般情况下,按正常方法获取目录列表
  11.         dirInfos = dirInfo.GetDirectories();
  12.     }
  13.     catch { }
  14.     //如果不为空,那么说明目录列表成功,否则需要添加安全访问规则
  15.     if (dirInfos != null)
  16.         return dirInfos;
  17.  
  18.     //新建账户安全访问规则
  19.     FileSystemAccessRule fsRule = new FileSystemAccessRule(System.Environment.UserName
  20.         , FileSystemRights.Modify, AccessControlType.Allow);
  21.  
  22.     //添加安全访问规则
  23.     DirectorySecurity dirSecurity = dirInfo.GetAccessControl();
  24.     dirSecurity.AddAccessRule(fsRule);
  25.     dirInfo.SetAccessControl(dirSecurity);
  26.  
  27.     try
  28.     {
  29.         dirInfos = dirInfo.GetDirectories();
  30.     }
  31.     catch (Exception ex)
  32.     {
  33.         MessageBox.Show("无法访问文件夹:" + dirInfo.FullName + "\n" + ex.Message);
  34.     }
  35.     //移除安全访问规则
  36.     dirSecurity = dirInfo.GetAccessControl();
  37.     dirSecurity.RemoveAccessRule(fsRule);
  38.     dirInfo.SetAccessControl(dirSecurity);
  39.     return dirInfos;
  40. }
(责任编辑:admin)

网学推荐

免费论文

原创论文

设为首页 | 加入收藏 | 论文首页 | 论文专题 | 设计下载 | 网学软件 | 论文模板 | 论文资源 | 程序设计 | 关于网学 | 站内搜索 | 网学留言 | 友情链接 | 资料中心
版权所有 QQ:3710167 邮箱:3710167@qq.com 网学网 [Myeducs.cn] 您电脑的分辨率是 像素
Copyright 2008-2015 myeducs.Cn www.myeducs.Cn All Rights Reserved 湘ICP备09003080号