C#保存目录权限

3
我一直在寻找将权限存储在目录中的方法。我目前正在使用SetACL来帮助完成。如果不使用它可以更改目录/注册表的所有权,那就更好了,但这是另一个故事。例如:
检查当前所有者和其权限。单击按钮可更改所有权和权限;单击另一个按钮可将其更改回原始状态。
为了避免问题,我的团队负责技术支持。我们远程进入计算机,执行技术支持,然后离开。我们需要能够更改权限,然后将其恢复到之前的状态。
非常感谢您的帮助。
1个回答

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# - 如何使用DirectorySecurity.SetOwner() ? 我遇到了麻烦

然而,如果你想要将所有者设置为其他人(因为我认为当用户已经拥有分配所有权权限时,你不需要分配所有权权限给他们),上述方法可能不起作用。我找到了一些关于如何将所有者设置为其他人的文档。以下是链接:

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


BiggsTRC,我将测试一下你刚刚发布的内容。非常感谢您提供如此多的信息!这个项目要在周一早上交,所以再次感谢您快速回复。 - John Andrews
@John Andrews - 很高兴能帮到你。如果你需要帮助或遇到困难,请大声喊出来。我想看到你成功。 - IAmTimCorey
好的,我已经可以更改所有者并设置权限了。有两个问题:1.当我为一个帐户设置权限时,它只是添加了另一个“特殊权限”的帐户;2.我仍然无法存储权限。尝试了很多次,但还是不行。 - John Andrews
这是我目前的进展...还没有保存的方法,但如果设置了继承,则会获得用户完全权限,然后删除权限并重置继承。存储的解决方法吧。 - John Andrews
@John Andrews - 这里是一个链接,其中包含一个可能有助于您的示例。它看起来像他们的示例正好可以做到您想做的事情:http://msdn.microsoft.com/zh-cn/library/system.io.file.setaccesscontrol.aspx - IAmTimCorey

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接