Create File and unable users to delete it C#

旧街凉风 提交于 2019-12-12 03:43:30

问题


I am creating a file like this:

System.IO.File.Create("file.dat").Close();

I want to set the file's permissions to disallow users from removing it. I tried the following, but it didn't work:

System.Security.AccessControl.FileSecurity fSecurity = File.GetAccessControl(dirPath + "\\" + fileName);

fSecurity.AddAccessRule(new System.Security.AccessControl.FileSystemAccessRule("Administrators",
    System.Security.AccessControl.FileSystemRights.Delete, System.Security.AccessControl.AccessControlType.Allow));

File.SetAccessControl(dirPath + "\\" + fileName, fSecurity);

回答1:


File permissions can be set using System.IO.File.SetAccessControl

See documentation and examples on MSDN: http://msdn.microsoft.com/en-us/library/system.io.file.setaccesscontrol.aspx

To deny delete permissons to all users but administrators you can use this code

    FileSecurity fSecurity = File.GetAccessControl(fileName);

    AuthorizationRuleCollection rules = fSecurity.GetAccessRules(true, true, typeof(System.Security.Principal.SecurityIdentifier));
    foreach (AuthorizationRule rule in rules)
    {
        System.Security.Principal.NTAccount account = 
            (System.Security.Principal.NTAccount)rule.IdentityReference.Translate(typeof(System.Security.Principal.NTAccount));
        if (account.Value != "BUILTIN\\Administrators")
        {
            fSecurity.AddAccessRule(new FileSystemAccessRule(account.Value, FileSystemRights.Delete, AccessControlType.Deny));
        }
    }

    File.SetAccessControl(fileName, fSecurity);


来源:https://stackoverflow.com/questions/17347563/create-file-and-unable-users-to-delete-it-c-sharp

易学教程内所有资源均来自网络或用户发布的内容,如有违反法律规定的内容欢迎反馈
该文章没有解决你所遇到的问题?点击提问,说说你的问题,让更多的人一起探讨吧!