【问题标题】:C# save directory permissionsC#保存目录权限
【发布时间】:2011-08-30 09:41:36
【问题描述】:

我一直在尝试找到一种在目录上存储权限的方法。我目前正在使用 SetACL 来提供帮助。如果我可以在没有它的情况下更改目录/注册表的所有权,那将是首选,但那是另一回事。一个例子是这样的:

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

为了解决为什么这个问题,我的团队提供技术支持。我们远程进入计算机,执行我们的 t/s 并离开。我们需要能够更改权限,然后将其恢复为原来的样子。

感谢任何帮助。

【问题讨论】:

    标签: c# permissions file-permissions directory-permissions


    【解决方案1】:

    如果您使用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

    但是,如果您想将所有者设置为其他人(因为我假设您在用户已经有权分配所有权权限时不需要为其分配所有权权限),上述方法不会工作我不相信。我找到了有关如何将所有者设置为您以外的其他人的文档。这是链接:

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

    【讨论】:

    • BiggsTRC,我会测试你刚刚发布的内容。谢谢你提供这么多信息!周一早上到期的项目,再次感谢您这么快回来
    • @John Andrews - 很高兴能提供帮助。如果您需要帮助或被困在某个地方,请继续大声喊叫。我希望看到你成功。
    • 好的,我知道了,我可以更改所有者并设置权限。两件事:1当我为一个帐户设置权限时,它只是用“特殊权限”添加了另一个,2我仍然无法存储权限。试了又试,还是不行。
    • 这是我到目前为止所得到的......仍然没有办法保存它,但如果设置了继承,那么我将获得用户完全权限,然后删除权限并重置继承。我想可以解决存储问题。
    • @John Andrews - 这是一个可能对您有所帮助的示例链接。看起来他们的示例完全符合您的要求:msdn.microsoft.com/en-us/library/…
    猜你喜欢
    • 2010-09-30
    • 2018-05-22
    • 2015-08-19
    • 2016-04-12
    • 2020-01-27
    • 2011-01-16
    • 2016-01-20
    • 2011-01-17
    • 1970-01-01
    相关资源
    最近更新 更多