C# - 在 Windows 7 中为所有用户设置目录权限
这应该是一个相当简单的问题,但由于某种原因我似乎无法让它工作。我想要做的就是设置给定目录的权限以允许所有用户完全访问。这是我到目前为止的代码:
System.IO.DirectoryInfo di = new System.IO.DirectoryInfo(destinationDirectory);
FileSystemAccessRule fsar = new FileSystemAccessRule("Users", FileSystemRights.FullControl, AccessControlType.Allow);
DirectorySecurity ds = null;
if (!di.Exists)
{
System.IO.Directory.CreateDirectory(destinationDirectory);
}
ds = di.GetAccessControl();
ds.AddAccessRule(fsar);
没有抛出异常,但也没有发生任何事情。当我在代码运行后检查目录权限时,没有看到任何变化。
有什么想法吗?
This should be a fairly simple problem, but for some reason I can't seem to get this to work. All I'd like to do is set the permissions on a given directory to allow full access to all users. Here's the code I have so far:
System.IO.DirectoryInfo di = new System.IO.DirectoryInfo(destinationDirectory);
FileSystemAccessRule fsar = new FileSystemAccessRule("Users", FileSystemRights.FullControl, AccessControlType.Allow);
DirectorySecurity ds = null;
if (!di.Exists)
{
System.IO.Directory.CreateDirectory(destinationDirectory);
}
ds = di.GetAccessControl();
ds.AddAccessRule(fsar);
No exceptions get thrown, but nothing happens, either. When I check the directory permissions after the code has been run, I see no changes.
Any ideas?
如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。
绑定邮箱获取回复消息
由于您还没有绑定你的真实邮箱,如果其他用户或者作者回复了您的评论,将不能在第一时间通知您!
发布评论
评论(2)
您还需要调用
SetAccessControl
应用更改。正如所讨论的,MSDN 上的示例似乎非常缺乏细节 此处。我破解了本文中的代码,得到了以下表现良好的代码:
You also need to call
SetAccessControl
to apply the changes.It seems that the examples on MSDN are sorely lacking in detail, as discussed here. I hacked the code from this article to get the following which behaves well:
David Heffernan 的答案不适用于非英语计算机,在非英语计算机上尝试设置“用户”权限会失败,并出现
IdentityNotMapped
异常。通过使用WellKnownSidType.BuiltinUsersSid
代替,以下代码将在任何地方工作:David Heffernan answer does not work on a non-English machine, where trying to set the permissions on "Users" fails with an
IdentityNotMapped
exception. The following code will work everywhere, by usingWellKnownSidType.BuiltinUsersSid
instead: