Guest User

Untitled

a guest
Aug 15th, 2018
70
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
text 2.12 KB | None | 0 0
  1. set file permissions for c:\program files\company\app\file for all users
  2. FileSecurity access = file.GetAccessControl();
  3. SecurityIdentifier everyone = new SecurityIdentifier(WellKnownSidType.WorldSid, null);
  4. access.AddAccessRule(new FileSystemAccessRule(everyone, FileSystemRights.ReadAndExecute, AccessControlType.Allow));
  5.  
  6. file.SetAccessControl(access);
  7.  
  8. public class PermissionController
  9. {
  10. private readonly string _file;
  11. private readonly FileSecurity _accessControl;
  12. private readonly SecurityIdentifier _id;
  13. private readonly List<FileSystemAccessRule> _permissionsDenied;
  14.  
  15. public PermissionController(string file)
  16. {
  17. _file = file;
  18. _accessControl = File.GetAccessControl(_file);
  19. _id = WindowsIdentity.GetCurrent().Owner;
  20. _permissionsDenied = new List<FileSystemAccessRule>();
  21. }
  22.  
  23. public void Allow(params FileSystemRights[] rights)
  24. {
  25. foreach (var right in rights)
  26. AddRule(Rule(right, AccessControlType.Allow));
  27. }
  28.  
  29. public void Deny(params FileSystemRights[] rights)
  30. {
  31. foreach (var right in rights)
  32. {
  33. var rule = Rule(right, AccessControlType.Deny);
  34. AddRule(rule);
  35. _permissionsDenied.Add(rule);
  36. }
  37. }
  38.  
  39. private void AddRule(FileSystemAccessRule rule)
  40. {
  41. _accessControl.AddAccessRule(rule);
  42. }
  43.  
  44. private FileSystemAccessRule Rule(FileSystemRights right, AccessControlType type)
  45. {
  46. return new FileSystemAccessRule(_id, right, type);
  47. }
  48.  
  49. public void RemoveDeniedPermissions()
  50. {
  51. foreach (var rule in _permissionsDenied)
  52. _accessControl.RemoveAccessRule(rule);
  53.  
  54. Apply();
  55. }
  56.  
  57. public void Apply()
  58. {
  59. File.SetAccessControl(_file,_accessControl);
  60. }
  61. }
  62.  
  63. _permissionController = new PermissionController(_file);
  64. _permissionController.Allow(FileSystemRights.Read, FileSystemRights.Write);
  65. _permissionController.Deny(FileSystemRights.FullControl,
  66. FileSystemRights.Modify,
  67. FileSystemRights.ReadAndExecute);
  68. _permissionController.Apply();
Add Comment
Please, Sign In to add comment