/// <summary> /// Sets the security descriptor of a kernel object. /// </summary> /// <param name="handle">A handle to a kernel object.</param> /// <param name="securityInformation">The information to modify.</param> /// <param name="securityDescriptor">The security descriptor.</param> public static void SetSecurity(IntPtr handle, SecurityInformation securityInformation, SecurityDescriptor securityDescriptor) { Win32.NtSetSecurityObject( handle, securityInformation, securityDescriptor ).ThrowIf(); }
/// <summary> /// Sets the security descriptor of an object. /// </summary> /// <param name="handle">A handle to an object.</param> /// <param name="objectType">The type of the object.</param> /// <param name="securityInformation">The information to modify.</param> /// <param name="securityDescriptor">The security descriptor.</param> public static void SetSecurity(IntPtr handle, SeObjectType objectType, SecurityInformation securityInformation, SecurityDescriptor securityDescriptor) { Win32Error result; IntPtr dacl = IntPtr.Zero; IntPtr group = IntPtr.Zero; IntPtr owner = IntPtr.Zero; IntPtr sacl = IntPtr.Zero; if (securityInformation.HasFlag(SecurityInformation.Dacl)) dacl = securityDescriptor.Dacl ?? IntPtr.Zero; if (securityInformation.HasFlag(SecurityInformation.Group)) group = securityDescriptor.Group; if (securityInformation.HasFlag(SecurityInformation.Owner)) owner = securityDescriptor.Owner; if (securityInformation.HasFlag(SecurityInformation.Sacl)) sacl = securityDescriptor.Sacl ?? IntPtr.Zero; if ((result = Win32.SetSecurityInfo( handle, objectType, securityInformation, owner, group, dacl, sacl )) != 0) Win32.Throw(result); }
public static void SetSecurity(IntPtr handle, SecurityInformation securityInformation, SecurityDescriptor securityDescriptor) { NtStatus status; if ((status = Win32.NtSetSecurityObject( handle, securityInformation, securityDescriptor )) >= NtStatus.Error) Win32.ThrowLastError(status); }