Ejemplo n.º 1
0
        private static void GrantAccess(string username, IntPtr handle, int accessMask)
        {
            SafeHandle      safeHandle = new NoopSafeHandle(handle);
            GenericSecurity security   = new GenericSecurity(false, ResourceType.WindowObject, safeHandle, AccessControlSections.Access);

            security.AddAccessRule(new GenericAccessRule(new NTAccount(username), accessMask, AccessControlType.Allow));
            security.Persist(safeHandle, AccessControlSections.Access);
        }
Ejemplo n.º 2
0
        private void GrantAccess(IntPtr handle, int accessMask)
        {
            using (SafeHandle safeHandle = new NoopSafeHandle(handle))
            {
                GenericSecurity security =
                    new GenericSecurity(false, ResourceType.WindowObject, safeHandle, AccessControlSections.Access);

                security.AddAccessRule(
                    new GenericAccessRule(new NTAccount(_session.ExecutableProcessUserName), accessMask, AccessControlType.Allow));
                security.Persist(safeHandle, AccessControlSections.Access);
            }
        }
Ejemplo n.º 3
0
        private void Init(NTAccount accountInfo, int windowStationMask, int desktopMask)
        {
            AccountInfo = accountInfo;

            WsSafeHandle          = new NoopSafeHandle(GetProcessWindowStation());
            WindowStationSecurity = new GenericSecurity(false, ResourceType.WindowObject, WsSafeHandle, AccessControlSections.Access);

            DSafeHandle     = new NoopSafeHandle(GetThreadDesktop(GetCurrentThreadId()));
            DesktopSecurity = new GenericSecurity(false, ResourceType.WindowObject, DSafeHandle, AccessControlSections.Access);

            OldWindowStationMask = ReadAccessMask(WindowStationSecurity, WsSafeHandle, windowStationMask);
            OldDesktopMask       = ReadAccessMask(DesktopSecurity, DSafeHandle, desktopMask);
        }
        private void Init(int windowStationMask, int desktopMask)
        {
            try
            {
                WsSafeHandle          = new NoopSafeHandle(GetProcessWindowStation());
                WindowStationSecurity = new GenericSecurity(false, ResourceType.WindowObject, WsSafeHandle, AccessControlSections.Access);

                DSafeHandle     = new NoopSafeHandle(GetThreadDesktop(GetCurrentThreadId()));
                DesktopSecurity = new GenericSecurity(false, ResourceType.WindowObject, DSafeHandle, AccessControlSections.Access);

                OldWindowStationMask = ReadAccessMask(WindowStationSecurity, WsSafeHandle, windowStationMask);
                OldDesktopMask       = ReadAccessMask(DesktopSecurity, DSafeHandle, desktopMask);
            }
            catch (Exception ex)
            {
                logger.Error(ex, "The account couldn´t not init.");
            }
        }
        static void GrantAccess(string username, string?domainName, IntPtr handle, int accessMask)
        {
            SafeHandle safeHandle = new NoopSafeHandle(handle);
            var        security   =
                new GenericSecurity(
                    false,
                    ResourceType.WindowObject,
                    safeHandle,
                    AccessControlSections.Access);

            var account = string.IsNullOrEmpty(domainName)
                ? new NTAccount(username)
                : new NTAccount(domainName, username);

            security.AddAccessRule(
                new GenericAccessRule(
                    account,
                    accessMask,
                    AccessControlType.Allow));
            security.Persist(safeHandle, AccessControlSections.Access);
        }
        static void GrantAccess(string username, string?domainName, IntPtr handle, int accessMask)
        {
            SafeHandle safeHandle = new NoopSafeHandle(handle);
            var        security   =
                new GenericSecurity(
                    false,
                    ResourceType.WindowObject,
                    safeHandle,
                    AccessControlSections.Access);

            var account = string.IsNullOrEmpty(domainName)
#pragma warning disable PC001 // API not supported on all platforms
                ? new NTAccount(username)
                : new NTAccount(domainName, username);

#pragma warning restore PC001 // API not supported on all platforms

            security.AddAccessRule(
                new GenericAccessRule(
                    account,
                    accessMask,
                    AccessControlType.Allow));
            security.Persist(safeHandle, AccessControlSections.Access);
        }