You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

C#中SetAccessControl方法调用报错,求助正确使用方式

解决DirectoryInfo.SetAccessControl的参数错误问题

你报错的核心原因是DirectoryInfo.SetAccessControl方法只接受一个DirectorySecurity类型的参数,不需要重复传入路径——因为你已经通过DirectoryInfo实例绑定了目标文件夹路径。

正确的使用流程

  1. 先获取目标文件夹的DirectorySecurity对象(这部分你已经写对了)
  2. 修改该对象的权限规则(实现文件夹锁定的核心步骤)
  3. 调用SetAccessControl传入修改后的DirectorySecurity对象

完整示例代码

比如要实现锁定文件夹(拒绝当前用户的写入/删除/修改权限),可以这样写:

string path = "你的文件夹路径";
System.IO.DirectoryInfo directoryInfo = new DirectoryInfo(path);

// 获取当前文件夹的权限设置
System.Security.AccessControl.DirectorySecurity dirSecurity = directoryInfo.GetAccessControl();

// 添加拒绝规则:拒绝当前用户的写入、删除、修改权限
var currentUser = System.Security.Principal.WindowsIdentity.GetCurrent().Name;
FileSystemAccessRule denyRule = new FileSystemAccessRule(
    currentUser,
    FileSystemRights.Write | FileSystemRights.Delete | FileSystemRights.Modify,
    AccessControlType.Deny
);
dirSecurity.AddAccessRule(denyRule);

// 应用修改后的权限设置
directoryInfo.SetAccessControl(dirSecurity);

关键说明

  • SetAccessControl无返回值,不需要用变量接收
  • 锁定文件夹时,根据需求调整FileSystemRights的枚举值,比如要完全禁止访问可以用FileSystemRights.FullControl
  • 运行程序需要管理员权限,否则会抛出UnauthorizedAccessException异常
  • 如果需要解锁,只需要移除对应的拒绝规则,再调用SetAccessControl即可

内容的提问来源于stack exchange,提问作者Jesse Barney

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.08.02 21:25:24