Example #1
0
        /// <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);
            }
        }
Example #2
0
        /// <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);
        }
Example #3
0
        /// <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));
        }
Example #4
0
		/// <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);
		}