asp.net 设置文件权限

本文提供了两种在Windows环境下通过编程方式设置文件夹权限的方法。一种是使用1.0版本的方法,涉及调用Windows API并利用Microsoft.Win32.Security命名空间;另一种是2.0版本的方法,使用了System.IO和System.Security.AccessControl命名空间来更简洁地为文件夹添加everyone权限。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

给文件权限everyone

 

ExpandedBlockStart.gif代码
以下是1.0的方法,调用Windows   API   
  
using   Microsoft.Win32.Security;   
 
 
  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);   

 

 在网上找了半天也只找到这个代码,而且只能用加everyone权限。有哪位知道告诉我一声,先谢了!

 

转载于:https://www.cnblogs.com/achao201/archive/2010/09/14/1826190.html

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值