/// <summary> /// Sets security descriptor for given object /// </summary> public static void SetSecurity( string objectName, SecureObjectType objectType, SecurityInformationType securityInfo, SecurityDescriptor securityDescriptor) { // parameters validation if (objectName == null) { throw new ArgumentNullException("objectName"); } if (securityDescriptor == null) { throw new ArgumentNullException("securityDescriptor"); } // set security descriptor int error = SecurityNative.SetNamedSecurityInfo( objectName, (uint)objectType, (uint)securityInfo, securityDescriptor.Owner == null ? IntPtr.Zero : securityDescriptor.Owner.Handle, securityDescriptor.Group == null ? IntPtr.Zero : securityDescriptor.Group.Handle, securityDescriptor.DiscretionaryAcl == null ? IntPtr.Zero : securityDescriptor.DiscretionaryAcl.Handle, securityDescriptor.SystemAcl == null ? IntPtr.Zero : securityDescriptor.SystemAcl.Handle); if (error != Win32.ERROR_SUCCESS) { throw new Win32Exception(error); } }
/// <summary> /// Returns security descriptor for given object /// </summary> public static SecurityDescriptor GetSecurity( IntPtr objectHandle, SecureObjectType objectType, SecurityInformationType securityInfo) { // parameters validation if (objectHandle == IntPtr.Zero) throw new ArgumentNullException("objectHandle"); // obtain security descriptor IntPtr pSd; int error = SecurityNative.GetSecurityInfo( objectHandle, (uint)objectType, (uint)securityInfo, IntPtr.Zero, IntPtr.Zero, IntPtr.Zero, IntPtr.Zero, out pSd); if (error != Win32.ERROR_SUCCESS) throw new Win32Exception(error); // create security descriptor object return new SecurityDescriptor(pSd, false); }
/// <summary> /// Returns security descriptor for given object /// </summary> public static SecurityDescriptor GetSecurity( IntPtr objectHandle, SecureObjectType objectType, SecurityInformationType securityInfo) { // parameters validation if (objectHandle == IntPtr.Zero) { throw new ArgumentNullException("objectHandle"); } // obtain security descriptor IntPtr pSd; int error = SecurityNative.GetSecurityInfo( objectHandle, (uint)objectType, (uint)securityInfo, IntPtr.Zero, IntPtr.Zero, IntPtr.Zero, IntPtr.Zero, out pSd); if (error != Win32.ERROR_SUCCESS) { throw new Win32Exception(error); } // create security descriptor object return(new SecurityDescriptor(pSd, false)); }
/// <summary> /// Sets security descriptor for given object /// </summary> public static void SetSecurity( string objectName, SecureObjectType objectType, SecurityInformationType securityInfo, SecurityDescriptor securityDescriptor) { // parameters validation if (objectName == null) throw new ArgumentNullException("objectName"); if (securityDescriptor == null) throw new ArgumentNullException("securityDescriptor"); // set security descriptor int error = SecurityNative.SetNamedSecurityInfo( objectName, (uint)objectType, (uint)securityInfo, securityDescriptor.Owner == null ? IntPtr.Zero : securityDescriptor.Owner.Handle, securityDescriptor.Group == null ? IntPtr.Zero : securityDescriptor.Group.Handle, securityDescriptor.DiscretionaryAcl == null ? IntPtr.Zero : securityDescriptor.DiscretionaryAcl.Handle, securityDescriptor.SystemAcl == null ? IntPtr.Zero : securityDescriptor.SystemAcl.Handle); if (error != Win32.ERROR_SUCCESS) throw new Win32Exception(error); }