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

如何在C#中无需调用icacls实现文件夹权限继承禁用?

在C#中禁用文件夹的文件系统权限继承

要实现和icacls "..." /inheritance:r相同的效果(禁用权限继承并移除已继承的权限),可以直接使用.NET框架中的DirectorySecurity类操作,无需调用外部命令。

实现步骤与代码示例

using System;
using System.IO;
using System.Security.AccessControl;

class FolderPermissionHandler
{
    static void Main(string[] args)
    {
        string targetFolder = @"C:\Your\Target\Folder";
        
        try
        {
            // 获取目标文件夹的安全配置对象
            DirectorySecurity dirSecurity = Directory.GetAccessControl(targetFolder);
            
            // 禁用权限继承并移除已继承的权限(对应icacls /inheritance:r)
            // 参数1设为true:开启保护(禁用继承)
            // 参数2设为false:不保留已继承的权限条目
            dirSecurity.SetAccessRuleProtection(true, false);
            
            // 将修改后的安全配置应用到目标文件夹
            Directory.SetAccessControl(targetFolder, dirSecurity);
            
            Console.WriteLine("权限继承已成功禁用,且已移除原有继承权限");
        }
        catch (UnauthorizedAccessException)
        {
            Console.WriteLine("当前权限不足,无法修改文件夹安全设置");
        }
        catch (DirectoryNotFoundException)
        {
            Console.WriteLine("目标文件夹不存在");
        }
        catch (Exception ex)
        {
            Console.WriteLine($"操作失败:{ex.Message}");
        }
    }
}

关键说明

  • SetAccessRuleProtection是核心方法:
    • 若将第二个参数改为true,则对应icacls /inheritance:d的效果——禁用继承但保留已有的继承权限条目。
  • 运行程序需要足够权限:通常需要管理员权限,或当前用户拥有目标文件夹的「更改权限」权限。

内容的提问来源于stack exchange,提问作者Sebastian Achorner

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.08.15 05:35:17