在C#中调用GetAccessRules(false, false)是否始终返回空AuthorizationRuleCollection?
关于GetAccessRules(false, false)返回空集合的说明
是的,当调用GetAccessRules(false, false, targetType)时,始终会返回空的AuthorizationRuleCollection。
原因非常直接:
- 第一个参数
includeExplicit设为false,意味着不包含直接应用到目标对象上的显式权限规则 - 第二个参数
includeInherited设为false,意味着不包含从父对象继承而来的权限规则
所有权限规则只会属于这两类中的一种——要么是直接给对象设置的显式规则,要么是继承自上级的规则。当你把这两类规则都排除在外时,自然没有任何规则可以被返回,所以集合的Count必然为0,和你测试代码里的输出结果一致。
哪怕目标对象(比如你测试里的新建文件)本身带有默认的继承权限,只要includeInherited设为false,这些规则也会被过滤掉;而如果没有手动给对象添加过显式权限,includeExplicit设为false也不会返回任何内容。
内容的提问来源于stack exchange,提问作者Andie2302
相关产品推荐
相关产品推荐

