如何在C#中自动执行以下手动步骤?
在Windows资源管理器中右键单击文件夹;
Properties -> Security -> Advanced -> Edit
取消勾选“包含此对象父级的可继承权限”,然后单击“删除”。
单击“添加”,选择一个组并授予其“修改权限”。
我找到this article,看起来就像我需要的那样,但我没有找到Microsoft.Win32.Security
。
答案 0 :(得分:4)
检查以下代码:
DirectoryInfo dInfo = new DirectoryInfo(strFullPath);
DirectorySecurity dSecurity = dInfo.GetAccessControl();
//check off & copy inherited security setting
dSecurity.SetAccessRuleProtection(true, true);
dInfo.SetAccessControl(dSecurity);
这用于设置文件夹的权限:
http://www.redmondpie.com/applying-permissions-on-any-windows-folder-using-c/
答案 1 :(得分:1)
我不知道那个,但你应该可以通过System.Security.AccessControl
命名空间中的DirectorySecurity类来做到这一点。
我认为您可能也希望查看InheritanceFlags枚举。
答案 2 :(得分:1)
我的理解是,从2.0开始,ACL并不是.Net Standard的一部分,但是,如果您通过以下方式进行安装:
安装包Microsoft.Windows.Compatibility-版本2.0.1 安装软件包Microsoft.DotNet.Analyzers.Compatibility -Version 0.2.12-alpha
您将获得与您在完整的.Net Framework中习惯的功能相匹配的扩展方法。例如,我需要设置目录安全性,在安装完上述文件后,此代码将编译并警告某些方法在linux或macOS上不可用
DirectoryInfo dInfo = new DirectoryInfo(strFullPath);
DirectorySecurity dSecurity = dInfo.GetAccessControl();
//check off & copy inherited security setting
dSecurity.SetAccessRuleProtection(true, true);
dInfo.SetAccessControl(dSecurity);
有关更多信息,请参见https://github.com/dotnet/docs/blob/master/docs/core/porting/windows-compat-pack.md