2011-05-21 127 views
3

我一直在试图找到一种方法来存储目录的权限。我目前使用SetACL来提供帮助。如果我可以改变目录/注册表的所有权而没有它将是首选的,但这是一个不同的故事。例如:C#保存目录权限

检查当前所有者和该所有者的权限。更改为按钮单击时的权限和所有者>单击另一个按钮时将其更改回原始。

为了保存原因,我的团队会提供技术支持。我们远程进入电脑,执行我们的t/s并离开。我们需要能够更改权限,然后恢复原来的状态。

任何帮助表示赞赏。

回答

4

如果使用System.ManagementSystem.Management.Instrumentation命名空间,则可以使用Directory.GetAccessControl方法获取谁有权访问文件夹。然后,您可以使用AddAccessRuleSetAccessControl方法实际应用您的新权限。完成后,您可以删除新的权限。下面是指导您如何更改文件夹的权限的文章:

http://www.redmondpie.com/applying-permissions-on-any-windows-folder-using-c/

笔者使用的基本代码如下:

DirectoryInfo myDirectoryInfo = new DirectoryInfo(yourFolderHere); 

// Get a DirectorySecurity object that represents the 
// current security settings. 
DirectorySecurity myDirectorySecurity = myDirectoryInfo.GetAccessControl(); 

// Builds a new user string for who we want to give permissions to 
string User = System.Environment.UserDomainName + "\\" + yourUserName; 

// Creates the permissions to apply 
myDirectorySecurity.AddAccessRule(new FileSystemAccessRule(User, 
            FileSystemRights.FullControl, AccessControlType.Allow)); 

// Set the new access settings. 
myDirectoryInfo.SetAccessControl(myDirectorySecurity); 

// Showing a Success Message 
MessageBox.Show("Permissions Altered Successfully"); 
} 

至于设置主人,这里是如何做到这一点的好SO文章:

C# - How to use DirectorySecurity.SetOwner() ? I'm having troubles

但是,如果你想设置的奥尼r是别人(因为我认为你不需要在用户已经有权分配所有权的时候给用户分配所有权),上面的这个方法是行不通的,我不相信。我找到了关于如何将所有者设置为自己以外的人的文档。这里是链接:

http://blog.salamandersoft.co.uk/index.php/2009/10/setting-the-owner-of-files-and-directories-in-c/

+0

BiggsTRC,我会测试出你刚刚发布的内容。感谢您提供如此多的信息!项目是周一早上到期,所以再次感谢你回来这么快 – 2011-05-21 23:13:41

+0

@约翰安德鲁斯 - 很高兴能有所帮助。如果您需要帮助或卡住某处,请继续留言。我想看到你成功。 – IAmTimCorey 2011-05-21 23:16:32

+0

好吧,我已经知道了,以便我可以更改所有者并设置权限。两件事:1,当我设置一个帐户的权限,它只是增加了另一个“特殊权限”,2我仍然无法存储权限。尝试和尝试,但它不工作。 – 2011-05-22 05:24:32