无法删除目录 ACE

2024-01-09

我正在使用 C# 和 .NET 4 编写一个类库,它通过网络与共享服务器上的文件系统进行交互。我正在尝试调整文件夹的某些权限,并且我完全有能力添加 ACE,但我很难删除它们。

这是我到目前为止的代码:

//get ACEs for the working folder.
DirectorySecurity disec = m_diWork.GetAccessControl();

//find out if the account we want to remove is inherited from a parent folder.
bool bIsAccountInherited = disec.GetAccessRules(false, true, typeof(NTAccount)).Cast<AuthorizationRule>().Any(ar => ar.IdentityReference.Value.Equals(act.Value, StringComparison.CurrentCultureIgnoreCase));
if (bIsAccountInherited)
{
    //if so, remove inheritance of ACEs but preserve existing ones.
    disec.SetAccessRuleProtection(true, true);
}

//remove all access to this account.
disec.PurgeAccessRules(act);

//commit changes to working folder.
m_diWork.SetAccessControl(disec);

变量act类型为 NTAccount,指域用户。

代码运行没有异常或任何明显问题,并且目标文件夹的权限已正确更改为非继承。但是,根本没有删除任何 ACE。

我尝试了几种不同的方法调用组合,还使用RemoveAccessRuleAll(),无济于事。我究竟做错了什么?谢谢。


问题在于您试图删除继承的访问权限,这是不允许的。发生这种情况是因为调用不够SetAccessRuleProtection(真,真)。仅当您致电时,更改才会生效设置访问控制然后。换句话说,您无法一次性删除访问权限的继承并对其进行修改。它必须分两个阶段完成,即:

  1. disec.SetAccessRuleProtection(true, true);
  2. m_diWork.SetAccessControl(disec);
  3. disec = m_diWork.GetAccessControl()
  4. disec.PurgeAccessRules(act);
  5. m_diWork.SetAccessControl(disec);

这并不明显,也没有帮助清除访问规则不通知删除访问权限的问题。

本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

无法删除目录 ACE 的相关文章

  • 为什么这些冲突出现在以下 XML 的 yacc 语法中

    我有以下 XML 语法 效果很好 program lt ID attribute list gt root root lt ID attribute list gt node list lt ID gt node list node s n
  • 任何reinterpret_cast改变指针值的真实例子?

    根据 C 标准 reinterpret cast一个指针的T 到其他类型的指针Q 可以改变或不改变指针值 https stackoverflow com questions 1863069 casting via void instead
  • 如何将 int.TryParse 与可为空的 int 一起使用? [复制]

    这个问题在这里已经有答案了 我正在尝试使用 TryParse 来查找字符串值是否为整数 如果该值为整数 则跳过 foreach 循环 这是我的代码 string strValue 42 if int TryParse trim strVal
  • tmpnam 的 C/C++ 线程安全性?

    我需要使用tmpnamC 中的函数 但我需要了解它的线程安全性 也就是说 如果我有多个线程 每个线程都需要为临时文件获取不同的名称 我是否可以保证每个线程都会收到具有不同名称的文件 tmpnam 仅保证该文件当时不存在 但它可能会在您自己创
  • 如何使用c#/VB.NET在word中插入书签

    我正在尝试使用 C 在 Word 文档中添加书签 但它不起作用 而且我在 msdn 文档和互联网上都找不到任何帮助 这就是我正在尝试做的事情 我正在阅读 Word 文档 然后在该文档中搜索关键字 然后将该文本转换为超链接 效果很好 现在 我
  • Visual Studio:同时调试多个项目?

    是否可以在 Visual Studio 中同时调试多个项目 我知道您可以从解决方案属性中选择多个启动项目 但是断点是如何处理的 如果两个项目使用同一个类 它的两个不同实例 并且我因其中的断点而停止 那么它只会阻止一个程序还是同时阻止两个程序
  • 使用迭代器遍历 boost::ublas 矩阵

    我只是想从头到尾遍历一个矩阵 触及每个元素 然而 我发现升压矩阵没有一个迭代器 而是有两个迭代器 而且我无法弄清楚如何使它们工作以便您可以遍历整个矩阵 typedef boost numeric ublas matrix
  • DirectX Vertex 中的 THE 是什么

    我知道 RHW 是倒数同质 W 但有人可以解释一下它的使用方法和作用吗 gamedev论坛上的说明post http www gamedev net topic 440283 reciprocal of homogeneous w and
  • 如何防止打印屏幕

    我有一个要求 我正在开发的应用程序阻止用户轻松捕获屏幕内容 我已经表示 没有可行的方法可以完全防止这种情况发生 但我正在寻找方法来为这一过程引入一些障碍 我正在使用 C NET 2 0 和 WinForms 你不能 您能做的最好的事情就是在
  • SolrNet:尝试添加和提交时 SolrConnectionException (400) 错误请求

    我已经到了 SolrNet 执行 Add 方法的地步 但是当我尝试 Commit 时 我收到了错误 以下是我的 schema xml 模型 调用它的代码以及我得到的错误 更奇怪的是 尽管出现错误 但在我重新启动 Tomcat 后 该模型仍会
  • DI Control-Freak 反模式:难以理解

    我正在阅读 Mark Seemann 写的 NET 中的依赖注入 但我无论如何也无法理解这一点 虽然new当涉及到 VOLATILE 时 关键字是一种代码味道 依赖性 您无需担心将其用于稳定 依赖性 这new一般来说 关键字不会突然变得 非
  • QFileDialog::getOpenFileName 调试时崩溃,显然是由项目名称引起的?

    我遇到了一个让我非常困惑的问题 我在 Windows 7 上使用 Qt Creator 3 1 2 和 Qt 5 3 使用 MSVC 10 0 编译器和 Windows 8 1 调试工具中的 CDB 不确定我是否应该寻找特定于 Window
  • 确定所选电子邮件是来自收件箱还是已发送邮件

    我正在编程Outlook 插件并需要确定所选电子邮件是否来自Inbox or Sent Items这样当我将电子邮件保存到数据库中时 我可以使用文件夹 收件箱 或 已发送 来标记电子邮件 我知道我可以将文件夹名称与 收件箱 或 已发送邮件
  • 传输数据的 Symbol.WPAN.Bluetooth 示例

    我正在尝试将 EMDK 附带的 Symbol WPAN Bluetooth 用于 Symbol 设备 有人碰巧有一个传输数据的工作示例吗 Symbol 的示例只是将设备配对 他们显然认为在个人局域网示例中并不真正需要传输数据 不管怎样 我知
  • 为什么在 C++ 内存管理中术语“自动”和“动态”优于术语“堆栈”和“堆”?

    与 SO 上的许多问题和答案相关 我了解到最好将其生命周期管理为驻留在自动存储中而不是堆栈中的对象 此外 动态分配的对象不应该被称为驻留在堆上 而应该被称为驻留在动态存储中 我知道有自动 动态和静态存储 但从未真正理解自动堆栈和动态堆之间的
  • Windows 中的蓝牙 AVRCP 命令会触发哪些事件

    可以这么说 只是在做一些高级侦察 对于我的潘多拉客户 Elpis http elpis adamhaile net 我支持全局媒体键 键盘上的 MediaPlayPause MediaNext 等 并且我希望能够支持AVRCP http e
  • 如何将curlpp 添加到我的项目中?

    我正在尝试从 vb net 过渡到 C 但我陷入了困境 我从下载了curpp这给了我一个 dll exp 和 lib 文件 我将包含这 3 个文件的目录添加到项目属性中的 附加库目录 链接器 gt 常规 接下来 我将 ws2 32 lib
  • (int *)0 是空指针吗?

    这可以被认为是一个扩展这个问题 https stackoverflow com q 16563114 912144 我只对 C 感兴趣 但添加 C 来完成扩展 C11 标准 6 3 2 3 3 规定 值为 0 的整数常量表达式 或此类表达式
  • 同时使用多个控制台

    是否有捷径可寻 我现在仅使用控制台测试我的网络应用程序 最好的办法是从一个项目中拥有多个控制台 然后按一下 立即调试 菜单项 我可以像过去一样使用多个项目 但这似乎很笨拙 理想情况下 我可以启动多个控制台实例 从同一线程运行很好 并且让它们
  • printf 右对齐括号内的数字

    我正在编写一个程序 显示数组中的所有信息 它必须以括号中的数组索引开头 例如 2 并且它们必须彼此正确对齐 如果只是数字 我知道你可以这样做 printf 10d index 但是用括号括起来会得到以下输出 1 2 10 11 当我真正希望

随机推荐

  • 按年龄对一组人进行排序的最快方法是什么?

    有一系列结构 struct string name string 2nd name int age 0 to 150 数组的最大长度为 10 8 我知道我可以使用归并排序 快速排序和所有其他众所周知的算法 但是我想知道是否可以添加其他东西来
  • 我的 Android 应用程序中未显示当前位置

    我已经编写了用于获取 android 项目中当前位置的代码 但它不会自动选择我的位置并在世界某个地方显示标记 尽管我坐在巴基斯坦 地图活动代码在这里 package com example uber import androidx anno
  • Jupyter 笔记本永远不会使用多重处理完成处理(Python 3)

    Jupyter笔记本 我基本上使用多处理模块 我仍在学习多处理的功能 我正在使用达斯蒂 菲利普斯的书 这个代码属于它 import multiprocessing import random from multiprocessing poo
  • Python - LightGBM 与 GridSearchCV,永远运行

    最近 我正在做多个实验来比较Python XgBoost和LightGBM 看来这个LightGBM是一种新算法 人们说它在速度和准确性上都比XGBoost更好 This is LightGBM GitHub https github co
  • 自动将根路径重定向到 Spring Boot 上下文路径

    我正在使用 application properties 文件中指定的 Spring Boot 上下文路径 并且效果很好 server port 5000 server context path services Spring Boot 2
  • 改变元素之间文本选择的顺序

    说我有这个 div position absolute top 0 right left 50px left left 0 div World div div Hello div 当我从左到右选择文本时 它的行为在视觉上不直观 至少在 Ch
  • 设计长期运行、资源密集型 Web 服务的建议

    我有一个 NET 函数可以执行一些复杂的计算 根据传入的参数 该函数 运行时间从几分钟到几个小时不等 计算期间使用 100 单核 需要 100 MB 到几 GB 内存 将几 MB 到几 GB 的数据写入磁盘 可能会抛出异常 包括 OutOf
  • 使用 Flask 从下拉菜单中获取数据

    我对 Flask 完全陌生 并且真的完全不知道如何解决这个问题 我已经研究过其他问题 但无论如何我似乎都无法使其正常工作 我有这样的表格
  • Ionic:导航到另一个视图时保留 $scope

    我正在使用 Ionic Framework Angular Cordova 开发一个应用程序 该应用程序有一个新闻部分 其中包含从 JSON 格式的服务器加载的新闻列表 然后我点击一个新的以打开单个新闻的视图 但是当返回到新闻列表时 sco
  • Flutter中是否可以使用JS可视化库(例如Chart.js或D3.js)?

    如果可能的话 它到底是如何运作的 也许可以访问 Flutter 的Canvas https api flutter dev flutter dart ui Canvas class html通过JS小部件 我对此最好的猜测是flutter
  • JNI 环境指针

    我有一个 Java 类 其中有一个必须从 C 代码调用的函数 函数如下 public void endTrial Code 所以我在我的 C 文件中创建了以下代码 JNIEXPORT void JNICALL package endTria
  • 获取 post_save 信号中字段的先前值

    我在 django 中有一个 post 信号 我需要访问字段的先前值 post save connect callback function postsave sender Media 我知道理想情况下我应该使用 pre save pre
  • UITableView reloadData() 不刷新显示的单元格

    I have class StationViewController UITableViewController UITableViewDelegate UITableViewDataSource IBOutlet var stationT
  • 包括所有依赖项

    我刚刚开始使用 WiX 因为我需要能够在我们的 CI 服务器上自动构建 MSI 有没有办法自动包含项目的所有依赖项 heat exe 的 proj 扩展变得越来越好 Heat http wixtoolset org documentatio
  • 对命名实体使用(NLP)门工具[关闭]

    Closed 这个问题需要多问focused help closed questions 目前不接受答案 我可以使用GATE吗http gate ac uk http gate ac uk 在我的java程序中提取命名实体 如果是 您能否举
  • sphinx-build 失败 - autodoc 无法导入/查找模块

    我正在尝试开始使用 Sphinx 但似乎遇到了无情的问题 命令 docs sphinx quickstart 我回答了所有问题 一切正常 命令 docs ls 一切看起来都很正常 结果 build Makefile source 命令 sp
  • 改变网格的不透明度会产生“淡入”效果吗?

    我在创建网格淡入淡出效果时遇到一些问题 我想要点击后出现一个网格 这可能吗 Thanks 参加派对有点晚了 因为我刚刚写的与隐士戴夫几乎相同 但也许它有助于更 好地理解 另一种方法是 在 XAML 视图中设置 Storyboard 项 在我
  • 正则表达式不允许使用字符,除非转义

    下面是我的正则表达式来解析逗号分隔的键值对 function extractParams str var result str replace s s s s g function a b result a trim b trim retu
  • 如何在 Ruby 中创建双向 SSL 套接字

    我正在构建一个客户端 Ruby 库 它连接到服务器并等待数据 但也允许用户通过调用方法发送数据 我使用的机制是有一个初始化套接字对的类 如下所示 def initialize pipe r pipe w Socket pair UNIX S
  • 无法删除目录 ACE

    我正在使用 C 和 NET 4 编写一个类库 它通过网络与共享服务器上的文件系统进行交互 我正在尝试调整文件夹的某些权限 并且我完全有能力添加 ACE 但我很难删除它们 这是我到目前为止的代码 get ACEs for the workin