删除所有默认文件权限

我有一个C#网络应用程序,它会提示管理员提供网络代理身份validation信息。 我问用户是否要保存这些信息,如果他们选择是,我会在用户的唯一本地文件中加密。 我想删除除创建它的用户以外的所有文件权限,但是除了能够删除该文件的所有其他用户之外。

现在,我在下面找到了MS文章,但如果我不知道首先在文件上设置的默认用户,它就无济于事。 是否删除了所有文件权限? 然后,我可以添加我想要为当前用户的完全访问权限设置的个人权限以及“所有用户”或“经过身份validation的用户”的删除权限,这些权限根据Windows的版本而有所不同。 http://msdn.microsoft.com/en-us/library/system.io.file.setaccesscontrol.aspx

我想到了..

public void SetFileSecurity(String filePath, String domainName, String userName) { //get file info FileInfo fi = new FileInfo(filePath); //get security access FileSecurity fs = fi.GetAccessControl(); //remove any inherited access fs.SetAccessRuleProtection(true, false); //get any special user access AuthorizationRuleCollection rules = fs.GetAccessRules(true, true, typeof(System.Security.Principal.NTAccount)); //remove any special access foreach (FileSystemAccessRule rule in rules) fs.RemoveAccessRule(rule); //add current user with full control. fs.AddAccessRule(new FileSystemAccessRule(domainName + "\\" + userName, FileSystemRights.FullControl, AccessControlType.Allow)); //add all other users delete only permissions. fs.AddAccessRule(new FileSystemAccessRule("Authenticated Users", FileSystemRights.Delete, AccessControlType.Allow)); //flush security access. File.SetAccessControl(filePath, fs); } 

假冒可能会帮助您解决这个问题。

编程上下文中的术语“模仿”指的是在最初启动应用程序的用户之下在另一用户上下文下执行代码的技术,即,在应用程序的执行期间临时改变用户上下文一次或多次。

点击这里查看实施内容

如果需要删除特定组,则可以使用此方法;

 public static void RemoveGroupPermission(string path, string group_name) { long begin = Datetime.Now.Ticks; DirectoryInfo dirInfo = new DirectoryInfo(path); DirectorySecurity dirSecurity = dirInfo.GetAccessControl(); dirSecurity.RemoveAccessRuleAll(new FileSystemAccessRule(Environment.UserDomainName + @"\" + group_name, 0, 0)); dirInfo.SetAccessControl(dirSecurity); long end = DateTime.Now.Ticks; Console.WriteLine("Tick : " + (end - begin)); }