我一直在尝试找到一种在目录上存储权限的方法。我目前正在使用 SetACL 来提供帮助。如果我可以在没有它的情况下更改目录/注册表的所有权,那将是首选,但那是另一回事。一个例子是这样的:
检查当前所有者和该所有者的权限。单击按钮时更改为权限和所有者>单击另一个按钮时将其更改回原始按钮。
为了省去为什么的问题,我的团队会提供技术支持。我们远程进入计算机,执行我们的t/s并离开。我们需要能够更改权限,然后将其恢复原样。
任何帮助,不胜感激。
如果使用 System.Management
和 System.Management.Instrumentation
命名空间,则可以使用 Directory.GetAccessControl
方法来获取谁有权访问文件夹。 然后,可以使用AddAccessRule
和SetAccessControl
方法来实际应用新权限。 完成后,您可以删除新权限。 以下文章将引导您完成如何更改文件夹的权限:
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/