WEB开发网
开发学院WEB开发ASP.NET .NET中如何访问被系统保护的文件夹 阅读

.NET中如何访问被系统保护的文件夹

 2009-03-25 17:42:35 来源:WEB开发网   
核心提示:Windows中有很多文件夹是受系统保护的,比如System Volume Information,.NET中如何访问被系统保护的文件夹,中文名称可以翻译为“系统卷标信息”,这个文件夹里就存储着系统还原的备份信息, 下面是C#写的一个获取受保护文件夹的子目录的函数://注意添加名称空间的引用:using Syste

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

//注意添加名称空间的引用:using System.Security.AccessControl;

PRivate DirectoryInfo[] GetDirList(DirectoryInfo dirInfo)
{
   if (dirInfo == null || !dirInfo.Exists)
     return null;
   DirectoryInfo[] dirInfos = null;
   try
   {
     //一般情况下,按正常方法获取目录列表
     dirInfos = dirInfo.GetDirectories();
   }
   catch { }
   //如果不为空,那么说明目录列表成功,否则需要添加安全访问规则
   if (dirInfos != null)
     return dirInfos;

   //新建账户安全访问规则
   FileSystemAccessRule fsRule = new FileSystemAccessRule(System.Environment.UserName
     , FileSystemRights.Modify, AccessControlType.Allow);

   //添加安全访问规则
   DirectorySecurity dirSecurity = dirInfo.GetAccessControl();
   dirSecurity.AddAccessRule(fsRule);
   dirInfo.SetAccessControl(dirSecurity);

   try
   {
     dirInfos = dirInfo.GetDirectories();
   }
   catch (Exception ex)
   {
     MessageBox.Show("无法访问文件夹:" + dirInfo.FullName + "\n" + ex.Message);
   }
   //移除安全访问规则
   dirSecurity = dirInfo.GetAccessControl();
   dirSecurity.RemoveAccessRule(fsRule);
   dirInfo.SetAccessControl(dirSecurity);
   return dirInfos;
}

Tags:NET 如何 访问

编辑录入:爽爽 [复制链接] [打 印]
赞助商链接