2012-07-16 61 views
0

我使用下面的代碼來應用文件夾的權限。這工作得很好,但我想要權限應用於主文件夾內的所有子文件夾。我如何實現這一目標?使用NTFS將權限應用於子文件夾

 ADsSecurity objADsSec; 
     SecurityDescriptor objSecDes; 
     AccessControlList objDAcl; 
     AccessControlEntry objAce1; 
     AccessControlEntry objAce2; 
     AccessControlEntry objAce3; 
     Object objSIdHex; 
     ADsSID objSId; 

     objADsSec = new ADsSecurityClass(); 
     objSecDes = (SecurityDescriptor)(objADsSec.GetSecurityDescriptor("FILE://" + vPath)); 
     objDAcl = (AccessControlList)objSecDes.DiscretionaryAcl; 

     objSId = new ADsSIDClass(); 
     objSId.SetAs((int)ADSSECURITYLib.ADS_SID_FORMAT.ADS_SID_SAM, UserName.ToString()); 
     objSIdHex = objSId.GetAs((int)ADSSECURITYLib.ADS_SID_FORMAT.ADS_SID_SDDL); 


     objAce2 = new AccessControlEntryClass(); 
     objAce2.Trustee = (objSIdHex).ToString(); 
     objAce2.AccessMask = (int)ActiveDs.ADS_RIGHTS_ENUM.ADS_RIGHT_GENERIC_READ; 
     objAce2.AceType = (int)ActiveDs.ADS_ACETYPE_ENUM.ADS_ACETYPE_ACCESS_ALLOWED; 
     objAce2.AceFlags = (int)ActiveDs.ADS_ACEFLAG_ENUM.ADS_ACEFLAG_VALID_INHERIT_FLAGS; 
     objDAcl.AddAce(objAce2); 

回答

0

您是否已經嘗試遞歸搜索目錄?

此代碼應正常工作

void DirSearch(string sDir) 
{ 
    try 
    { 
     foreach (string d in Directory.GetDirectories(sDir)) 
     { 
     foreach (string f in Directory.GetFiles(d, txtFile.Text)) 
     { 
      lstFilesFound.Items.Add(f); 
     } 
     DirSearch(d); 
     } 
    } 
    catch (System.Exception excpt) 
    { 
     Console.WriteLine(excpt.Message); 
    } 
}