C# 存储文件夹权限
Posted
技术标签:
【中文标题】C# 存储文件夹权限【英文标题】:C# Storing Folder Permissions 【发布时间】:2010-11-28 19:13:33 【问题描述】:我在存储文件夹权限时遇到了一点麻烦。我能够找到一些关于编写和阅读它们的文档。我要做的是读取特定用户的文件夹权限>存储它>更改权限>安装程序完成后,将权限更改回来。
除了如何存储原始文件夹权限并将其重新设置外,我已将其全部记录下来(仅由于许多其他人的代码)。我很乐意阅读您建议的任何材料,我们收到了该软件的几个致命错误,这是解决其中许多错误的一步。欢迎并感谢所有帮助。
以下是我如何设置权限的示例。是的,我知道我有每个人,但现在只是为了测试
public void setPermDir()
try
string DirectoryName = "C:\\Temp1\\";
Console.WriteLine("Adding access control entry for " + DirectoryName);
// Add the access control entry to the directory.
AddDirectorySecurity(DirectoryName, @"Everyone", FileSystemRights.FullControl, AccessControlType.Allow);
Console.WriteLine("Done.");
catch (Exception e)
Console.WriteLine(e);
Console.ReadLine();
// Adds an ACL entry on the specified directory for the specified account.
public static void AddDirectorySecurity(string FileName, string Account, FileSystemRights Rights, AccessControlType ControlType)
// Create a new DirectoryInfo object.
DirectoryInfo dInfo = new DirectoryInfo(FileName);
// Get a DirectorySecurity object that represents the
// current security settings.
DirectorySecurity dSecurity = dInfo.GetAccessControl();
// Add the FileSystemAccessRule to the security settings.
dSecurity.AddAccessRule(new FileSystemAccessRule(Account,
Rights,
ControlType));
// Set the new access settings.
dInfo.SetAccessControl(dSecurity);
【问题讨论】:
【参考方案1】:如果您从 AddDirectorySecurity 返回 DirectorySecurity dSecurity,那么您可以在完成修改后的访问规则后调用 Directory.SetAccessControl(directoryName, dSecurity);
。
更新
如果只是 SetAccessControl 不起作用,下一步可能是显式删除您使用 FileSystemSecurity.RemoveAccessRule 授予的权限。
只需保留对您创建的 FileSystemAccessRule 的引用即可:
FileSystemAccessRule toRemoveWhenDone = new FileSystemAccessRule(Account, Rights, ControlType);
【讨论】:
是的,我正在使用这种方法。我只是没有看到如何存储特定用户的权限。以上是关于C# 存储文件夹权限的主要内容,如果未能解决你的问题,请参考以下文章