以编程方式向文件夹添加权限
Posted
技术标签:
【中文标题】以编程方式向文件夹添加权限【英文标题】:Programmatically Adding Permissions to a Folder 【发布时间】:2012-07-13 19:14:45 【问题描述】:我有一个问题,我需要为所有经过身份验证的用户添加对文件夹的访问权限,以存储应用程序相关设置。我发现这可以用下面的代码来完成......
var Info = new DirectoryInfo(settingsdir);
var Security = Info.GetAccessControl(AccessControlSections.Access);
Security.AddAccessRule(
new FileSystemAccessRule(
"Authenticated Users", FileSystemRights.Modify,
InheritanceFlags.ContainerInherit | InheritanceFlags.ObjectInherit,
PropagationFlags.None,
AccessControlType.Allow));
我发现的问题是“经过身份验证的用户”是 Windows 上的系统帐户,但是在不同语言版本的 Windows 上,此帐户名称被翻译,例如在德国,此帐户称为“Authentifizierte Benutzer”。有没有办法知道该帐户的正确名称(无需遍历每种语言并找到正确的帐户名称)。
【问题讨论】:
【参考方案1】:我建议您使用 Well Known SID 列表(请参阅http://support.microsoft.com/kb/243330)。经过身份验证的用户始终是 SID:S-1-5-11。如果你使用它,它应该与语言无关(但我没有测试过)。
创建一个SecurityIdentifier 并改用它:
var sid = new SecurityIdentifier(WellKnownSidType.AuthenticatedUserSid, null);
Security.AddAccessRule(
new FileSystemAccessRule(
sid,
FileSystemRights.Modify,
InheritanceFlags.ContainerInherit | InheritanceFlags.ObjectInherit,
PropagationFlags.None,
AccessControlType.Allow));
【讨论】:
也为我工作,但我不得不致电Info.SetAccessControl(Security)
提交此处所述的更改:***.com/questions/8944765/…
AddAccessRule 或 ModifyAccessRule ?以上是关于以编程方式向文件夹添加权限的主要内容,如果未能解决你的问题,请参考以下文章
LibreOffice/OpenOffice 能否以编程方式向现有的 .docx/.xlsx/.pptx 文件添加密码?
如何向 SimulatorTrampoline 添加权限以访问特定文件夹