Nie możesz wybrać więcej, niż 25 tematów Tematy muszą się zaczynać od litery lub cyfry, mogą zawierać myślniki ('-') i mogą mieć do 35 znaków.
 
 

69 wiersze
1.7 KiB

  1. using Alphaleonis.Win32.Filesystem;
  2. using System.Security.AccessControl;
  3. using System.Security.Principal;
  4. namespace Security2
  5. {
  6. public class FileSystemOwner
  7. {
  8. private FileSystemInfo item;
  9. private IdentityReference2 owner;
  10. private FileSystemSecurity sd;
  11. public FileSystemInfo Item
  12. {
  13. get { return item; }
  14. }
  15. public IdentityReference2 Owner
  16. {
  17. get { return owner; }
  18. }
  19. public IdentityReference2 Account
  20. {
  21. get { return owner; }
  22. }
  23. public string FullName
  24. {
  25. get { return item.FullName; }
  26. }
  27. private FileSystemOwner(FileSystemInfo item, IdentityReference2 owner)
  28. {
  29. this.item = item;
  30. this.owner = owner;
  31. }
  32. public static FileSystemOwner GetOwner(FileSystemSecurity2 sd)
  33. {
  34. return new FileSystemOwner(sd.Item, sd.SecurityDescriptor.GetOwner(typeof(SecurityIdentifier)));
  35. }
  36. public static void SetOwner(FileSystemSecurity2 sd, IdentityReference2 account)
  37. {
  38. sd.SecurityDescriptor.SetOwner(account);
  39. }
  40. public static FileSystemOwner GetOwner(FileSystemInfo item)
  41. {
  42. return GetOwner(new FileSystemSecurity2(item, AccessControlSections.Owner));
  43. }
  44. public static void SetOwner(FileSystemInfo item, IdentityReference2 account)
  45. {
  46. var sd = new FileSystemSecurity2(item, AccessControlSections.Owner);
  47. SetOwner(sd, account);
  48. sd.Write();
  49. }
  50. public override string ToString()
  51. {
  52. return item.FullName;
  53. }
  54. }
  55. }