2008-11-26 126 views
1

我写了代码来设置文件夹的权限。我公司开发的功能是目录/文件权限问题

public void SetPermission(string user,FileSystemRights rights) 
{ 
    DirectoryInfo dInfo = new DirectoryInfo(folderPath); 
    DirectorySecurity oDirectorySecurity = new DirectorySecurity(); 

    oDirectorySecurity.AddAccessRule(new FileSystemAccessRule(user, rights, AccessControlType.Allow)); 
    dInfo.SetAccessControl(oDirectorySecurity); 
} 

此功能工作正常设置权限的用户。 但是,当我检查文件夹属性 - >安全性,用户添加。但是在复选框 中打开高级对话框没有选中权限。在此框中,我可以看到我为用户设置的权限。

所以我的问题是为什么没有在安全选项卡上选择复选框,但它在高级选项卡中有吗?

请帮助我!!!!!!

回答

1

我也遇到过这个问题。这似乎是一个服务补丁的事情。

你可以阅读我是如何解决它在http://jspot.jerryhanel.com/2009/01/08/c-filedirectory-permissions/

短版:你必须设置一个标志,对所有的ACL为所有用户。是的,这很丑陋。当您添加Service Pack 3时,复选标记会再次消失。如果任何人有比这更清洁的解决方案,请让我知道。

我有我的网站上的代码。

UPDATE:网址现在指向新网站。

+0

你能羡慕我吗? – 2010-12-27 10:32:29

0

这可能有助于使用dInfo.GetAccessControl来初始化oDirectorySecurity。 你也可以尝试调用oDirectorySecurity.SetOwner。

有时权限只在高级显示,如果它们不适用于更正对象。尝试在FileSystemAccessRule对象上设置Inheritance/Propigation标志。