| 12345678910111213141516171819202122232425262728293031323334353637383940414243444546474849505152535455565758596061626364656667686970717273 | 
							- #if !NETSTANDARD
 
- using System;
 
- using System.Runtime.InteropServices;
 
- using System.Security.AccessControl;
 
- using System.Security.Principal;
 
- namespace WinSCP
 
- {
 
-     // All the code to manipulate security object is available in .NET framework,
 
-     // but its API tries to be type-safe and handle-safe, enforcing special implemnentation
 
-     // (to otherwise a generic WinAPI) for each handle type. This is to make sure
 
-     // only correct set of permissions can be set for corresponding object types and
 
-     // mainly that handles do not leak.
 
-     // Hence the AccessRule and NativeObjectSecurity clases are abstract.
 
-     // This is the simplest possible implementation that yet allows us to make use
 
-     // of the existing .NET implementation, sparing necessity to P/Invoke the underlying WinAPI.
 
-     internal class GenericAccessRule : AccessRule
 
-     {
 
-         public GenericAccessRule(IdentityReference identity, int accessMask, AccessControlType type) :
 
-             base(identity, accessMask, false, InheritanceFlags.None, PropagationFlags.None, type)
 
-         {
 
-         }
 
-     }
 
-     internal class GenericSecurity : NativeObjectSecurity
 
-     {
 
-         public GenericSecurity(bool isContainer, ResourceType resType, SafeHandle objectHandle, AccessControlSections sectionsRequested)
 
-             : base(isContainer, resType, objectHandle, sectionsRequested)
 
-         {
 
-         }
 
-         new public void Persist(SafeHandle handle, AccessControlSections includeSections)
 
-         {
 
-             base.Persist(handle, includeSections);
 
-         }
 
-         new public void AddAccessRule(AccessRule rule)
 
-         {
 
-             base.AddAccessRule(rule);
 
-         }
 
-         #region NativeObjectSecurity Abstract Method Overrides
 
-         public override Type AccessRightType
 
-         {
 
-             get { throw new NotImplementedException(); }
 
-         }
 
-         public override AccessRule AccessRuleFactory(System.Security.Principal.IdentityReference identityReference, int accessMask, bool isInherited, InheritanceFlags inheritanceFlags, PropagationFlags propagationFlags, AccessControlType type)
 
-         {
 
-             throw new NotImplementedException();
 
-         }
 
-         public override Type AccessRuleType
 
-         {
 
-             get { return typeof(AccessRule); }
 
-         }
 
-         public override AuditRule AuditRuleFactory(System.Security.Principal.IdentityReference identityReference, int accessMask, bool isInherited, InheritanceFlags inheritanceFlags, PropagationFlags propagationFlags, AuditFlags flags)
 
-         {
 
-             throw new NotImplementedException();
 
-         }
 
-         public override Type AuditRuleType
 
-         {
 
-             get { return typeof(AuditRule); }
 
-         }
 
-         #endregion
 
-     }
 
- }
 
- #endif
 
 
  |