给上传文件夹赋予everyone 写入权限

来源:互联网 发布:mac隐藏硬盘 编辑:程序博客网 时间:2024/05/21 22:28

 以下是1.0的方法,调用Windows   API  
  using   Microsoft.Win32.Security;  
  http://www.gotdotnet.com/Community/UserSamples/Details.aspx?SampleGuid=e6098575-dda0-48b8-9abf-e0705af065d9  
  private   Boolean   CreateDir(String   strSitePath,   String   strUserName)   {  
                Boolean   bOk;  
                try   {  
                              Directory.CreateDirectory(strSitePath);  
                              SecurityDescriptor   secDesc   =   SecurityDescriptor.GetFileSecurity(strSitePath,   SECURITY_INFORMATION.DACL_SECURITY_INFORMATION);  
                              Dacl   dacl   =   secDesc.Dacl;  
                              Sid   sidUser   =   new   Sid   (strUserName);  
     
   
                              //   allow:   folder,   subfolder   and   files  
                              //   modify  
                              dacl.AddAce   (new   AceAccessAllowed   (sidUser,   AccessType.GENERIC_WRITE   |   AccessType.GENERIC_READ   |   AccessType.DELETE   |   AccessType.GENERIC_EXECUTE   ,   AceFlags.OBJECT_INHERIT_ACE   |   AceFlags.CONTAINER_INHERIT_ACE));  
                               
   
                              //   deny:   this   folder  
                              //   write   attribs  
                              //   write   extended   attribs  
                              //   delete  
                              //   change   permissions  
                              //   take   ownership  
                              DirectoryAccessType   DAType   =   DirectoryAccessType.FILE_WRITE_ATTRIBUTES   |   DirectoryAccessType.FILE_WRITE_EA   |   DirectoryAccessType.DELETE   |   DirectoryAccessType.WRITE_OWNER   |   DirectoryAccessType.WRITE_DAC;  
                              AccessType   AType   =   (AccessType)DAType;  
                              dacl.AddAce   (new   AceAccessDenied   (sidUser,   AType));  
     
                              secDesc.SetDacl(dacl);  
                              secDesc.SetFileSecurity(strSitePath,   SECURITY_INFORMATION.DACL_SECURITY_INFORMATION);  
                              bOk   =   true;  
                }   catch   {  
                              bOk   =   false;  
                }  
                return   bOk;  
   
  }  
   
  2.0的,里面的方法是2.0中新加的:  
    System.IO.DirectoryInfo   dInfo   =   new   System.IO.DirectoryInfo("Your   Forlder   Path   here");  
                                  System.Security.AccessControl.DirectorySecurity   dSecurity   =   new   System.Security.AccessControl.DirectorySecurity();  
                                  dSecurity.AddAccessRule(new   System.Security.AccessControl.FileSystemAccessRule("Everyone",   System.Security.AccessControl.FileSystemRights.WriteData,   System.Security.AccessControl.AccessControlType.Allow));  
                                  dInfo.SetAccessControl(dSecurity);  

原创粉丝点击