程序師世界是廣大編程愛好者互助、分享、學習的平台,程序師世界有你更精彩!
首頁
編程語言
C語言|JAVA編程
Python編程
網頁編程
ASP編程|PHP編程
JSP編程
數據庫知識
MYSQL數據庫|SqlServer數據庫
Oracle數據庫|DB2數據庫
 程式師世界 >> 編程語言 >> .NET網頁編程 >> .NET實例教程 >> .NET中如何訪問被系統保護的文件夾

.NET中如何訪問被系統保護的文件夾

編輯:.NET實例教程

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; 
}


  1. 上一頁:
  2. 下一頁:
Copyright © 程式師世界 All Rights Reserved