Example #1
0
        public TokenWindow(IWithToken obj)
        {
            InitializeComponent();
            this.AddEscapeToClose();
            this.SetTopMost();

            _tokenProps      = new TokenProperties(obj);
            _tokenProps.Dock = DockStyle.Fill;

            panelToken.Controls.Add(_tokenProps);
        }
Example #2
0
        public TokenWindow(IWithToken obj)
        {
            InitializeComponent();
            this.AddEscapeToClose();
            this.SetTopMost();

            _tokenProps = new TokenProperties(obj);
            _tokenProps.Dock = DockStyle.Fill;

            panelToken.Controls.Add(_tokenProps);
        }
Example #3
0
        public TokenProperties(IWithToken obj)
        {
            InitializeComponent();

            listPrivileges.SetDoubleBuffered(true);
            listPrivileges.ListViewItemSorter = new SortedListViewComparer(listPrivileges);
            GenericViewMenu.AddMenuItems(copyMenuItem.MenuItems, listPrivileges, null);
            listPrivileges.ContextMenu = menuPrivileges;

            if (obj == null)
            {
                return;
            }

            _object = obj;

            try
            {
                using (TokenHandle thandle = _object.GetToken(TokenAccess.Query))
                {
                    // "General"
                    try
                    {
                        textUser.Text         = thandle.GetUser().GetFullName(true);
                        textUserSID.Text      = thandle.GetUser().StringSid;
                        textOwner.Text        = thandle.GetOwner().GetFullName(true);
                        textPrimaryGroup.Text = thandle.GetPrimaryGroup().GetFullName(true);
                    }
                    catch (Exception ex)
                    {
                        textUser.Text = "(" + ex.Message + ")";
                    }

                    try
                    {
                        textSessionID.Text = thandle.GetSessionId().ToString();
                    }
                    catch (Exception ex)
                    {
                        textSessionID.Text = "(" + ex.Message + ")";
                    }

                    try
                    {
                        var type = thandle.GetElevationType();

                        if (type == TokenElevationType.Default)
                        {
                            textElevated.Text = "N/A";
                        }
                        else if (type == TokenElevationType.Full)
                        {
                            textElevated.Text = "True";
                        }
                        else if (type == TokenElevationType.Limited)
                        {
                            textElevated.Text = "False";
                        }
                    }
                    catch (Exception ex)
                    {
                        textElevated.Text = "(" + ex.Message + ")";
                    }

                    // Determine if the token has a linked token.
                    if (OSVersion.HasUac)
                    {
                        try
                        {
                            TokenHandle linkedToken = thandle.GetLinkedToken();

                            if (linkedToken != null)
                            {
                                linkedToken.Dispose();
                            }
                            else
                            {
                                buttonLinkedToken.Visible = false;
                            }
                        }
                        catch
                        {
                            buttonLinkedToken.Visible = false;
                        }
                    }
                    else
                    {
                        buttonLinkedToken.Visible = false;
                    }

                    try
                    {
                        bool virtAllowed = thandle.IsVirtualizationAllowed();
                        bool virtEnabled = thandle.IsVirtualizationEnabled();

                        if (virtEnabled)
                        {
                            textVirtualized.Text = "Enabled";
                        }
                        else if (virtAllowed)
                        {
                            textVirtualized.Text = "Disabled";
                        }
                        else
                        {
                            textVirtualized.Text = "Not Allowed";
                        }
                    }
                    catch (Exception ex)
                    {
                        textVirtualized.Text = "(" + ex.Message + ")";
                    }

                    try
                    {
                        using (TokenHandle tokenSource = _object.GetToken(TokenAccess.QuerySource))
                        {
                            var source = tokenSource.GetSource();

                            textSourceName.Text = source.SourceName.TrimEnd('\0', '\r', '\n', ' ');

                            long luid = source.SourceIdentifier.QuadPart;

                            textSourceLUID.Text = "0x" + luid.ToString("x");
                        }
                    }
                    catch (Exception ex)
                    {
                        textSourceName.Text = "(" + ex.Message + ")";
                    }

                    // "Advanced"
                    try
                    {
                        var statistics = thandle.GetStatistics();

                        textTokenType.Text          = statistics.TokenType.ToString();
                        textImpersonationLevel.Text = statistics.ImpersonationLevel.ToString();
                        textTokenId.Text            = "0x" + statistics.TokenId.ToString();
                        textAuthenticationId.Text   = "0x" + statistics.AuthenticationId.ToString();
                        textMemoryUsed.Text         = Utils.FormatSize(statistics.DynamicCharged);
                        textMemoryAvailable.Text    = Utils.FormatSize(statistics.DynamicAvailable);
                    }
                    catch (Exception ex)
                    {
                        textTokenType.Text = "(" + ex.Message + ")";
                    }

                    try
                    {
                        var groups = thandle.GetGroups();

                        _groups = new TokenGroupsList(groups);

                        foreach (var group in groups)
                        {
                            group.Dispose();
                        }

                        _groups.Dock = DockStyle.Fill;
                        tabGroups.Controls.Add(_groups);
                    }
                    catch (Exception ex)
                    {
                        tabGroups.Text = "(" + ex.Message + ")";
                    }

                    try
                    {
                        var privileges = thandle.GetPrivileges();

                        for (int i = 0; i < privileges.Length; i++)
                        {
                            this.AddPrivilege(privileges[i]);
                        }
                    }
                    catch (Exception ex)
                    {
                        tabPrivileges.Text = "(" + ex.Message + ")";
                    }
                }
            }
            catch (Exception ex)
            {
                tabControl.Visible = false;

                Label errorMessage = new Label();

                errorMessage.Text = ex.Message;

                this.Padding = new Padding(15, 10, 0, 0);
                this.Controls.Add(errorMessage);
            }

            if (!OSVersion.HasUac)
            {
                labelElevated.Enabled       = false;
                textElevated.Enabled        = false;
                textElevated.Text           = "";
                labelVirtualization.Enabled = false;
                textVirtualized.Enabled     = false;
                textVirtualized.Text        = "";
            }

            if (tabControl.TabPages[Settings.Instance.TokenWindowTab] != null)
            {
                tabControl.SelectedTab = tabControl.TabPages[Settings.Instance.TokenWindowTab];
            }

            ColumnSettings.LoadSettings(Settings.Instance.PrivilegeListColumns, listPrivileges);
            listPrivileges.AddShortcuts();
        }
        public TokenProperties(IWithToken obj)
        {
            InitializeComponent();

            listPrivileges.SetDoubleBuffered(true);
            listPrivileges.ListViewItemSorter = new SortedListViewComparer(listPrivileges);
            GenericViewMenu.AddMenuItems(copyMenuItem.MenuItems, listPrivileges, null);
            listPrivileges.ContextMenu = menuPrivileges;

            if (obj == null)
                return;

            _object = obj;

            try
            {
                using (TokenHandle thandle = _object.GetToken(TokenAccess.Query))
                {
                    // "General"
                    try
                    {
                        textUser.Text = thandle.GetUser().GetFullName(true);
                        textUserSID.Text = thandle.GetUser().StringSid;
                        textOwner.Text = thandle.GetOwner().GetFullName(true);
                        textPrimaryGroup.Text = thandle.GetPrimaryGroup().GetFullName(true);
                    }
                    catch (Exception ex)
                    {
                        textUser.Text = "(" + ex.Message + ")";
                    }

                    try
                    {
                        textSessionID.Text = thandle.GetSessionId().ToString();
                    }
                    catch (Exception ex)
                    {
                        textSessionID.Text = "(" + ex.Message + ")";
                    }

                    try
                    {
                        var type = thandle.GetElevationType();

                        if (type == TokenElevationType.Default)
                            textElevated.Text = "N/A";
                        else if (type == TokenElevationType.Full)
                            textElevated.Text = "True";
                        else if (type == TokenElevationType.Limited)
                            textElevated.Text = "False";
                    }
                    catch (Exception ex)
                    {
                        textElevated.Text = "(" + ex.Message + ")";
                    }

                    // Determine if the token has a linked token.
                    if (OSVersion.HasUac)
                    {
                        try
                        {
                            TokenHandle linkedToken = thandle.GetLinkedToken();

                            if (linkedToken != null)
                                linkedToken.Dispose();
                            else
                                buttonLinkedToken.Visible = false;
                        }
                        catch
                        {
                            buttonLinkedToken.Visible = false;
                        }
                    }
                    else
                    {
                        buttonLinkedToken.Visible = false;
                    }

                    try
                    {
                        bool virtAllowed = thandle.IsVirtualizationAllowed();
                        bool virtEnabled = thandle.IsVirtualizationEnabled();

                        if (virtEnabled)
                            textVirtualized.Text = "Enabled";
                        else if (virtAllowed)
                            textVirtualized.Text = "Disabled";
                        else
                            textVirtualized.Text = "Not Allowed";
                    }
                    catch (Exception ex)
                    {
                        textVirtualized.Text = "(" + ex.Message + ")";
                    }

                    try
                    {
                        using (TokenHandle tokenSource = _object.GetToken(TokenAccess.QuerySource))
                        {
                            var source = tokenSource.GetSource();

                            textSourceName.Text = source.SourceName.TrimEnd('\0', '\r', '\n', ' ');

                            long luid = source.SourceIdentifier.QuadPart;

                            textSourceLUID.Text = "0x" + luid.ToString("x");
                        }
                    }
                    catch (Exception ex)
                    {
                        textSourceName.Text = "(" + ex.Message + ")";
                    }

                    // "Advanced"
                    try
                    {
                        var statistics = thandle.GetStatistics();

                        textTokenType.Text = statistics.TokenType.ToString();
                        textImpersonationLevel.Text = statistics.ImpersonationLevel.ToString();
                        textTokenId.Text = "0x" + statistics.TokenId.ToString();
                        textAuthenticationId.Text = "0x" + statistics.AuthenticationId.ToString();
                        textMemoryUsed.Text = Utils.FormatSize(statistics.DynamicCharged);
                        textMemoryAvailable.Text = Utils.FormatSize(statistics.DynamicAvailable);
                    }
                    catch (Exception ex)
                    {
                        textTokenType.Text = "(" + ex.Message + ")";
                    }

                    try
                    {
                        var groups = thandle.GetGroups();

                        _groups = new TokenGroupsList(groups);

                        foreach (var group in groups)
                            group.Dispose();

                        _groups.Dock = DockStyle.Fill;
                        tabGroups.Controls.Add(_groups);
                    }
                    catch (Exception ex)
                    {
                        tabGroups.Text = "(" + ex.Message + ")";
                    }

                    try
                    {
                        var privileges = thandle.GetPrivileges();

                        for (int i = 0; i < privileges.Length; i++)
                        {
                            this.AddPrivilege(privileges[i]);
                        }
                    }
                    catch (Exception ex)
                    {
                        tabPrivileges.Text = "(" + ex.Message + ")";
                    }
                }
            }
            catch (Exception ex)
            {
                tabControl.Visible = false;

                Label errorMessage = new Label();

                errorMessage.Text = ex.Message;

                this.Padding = new Padding(15, 10, 0, 0);
                this.Controls.Add(errorMessage);
            }

            if (!OSVersion.HasUac)
            {
                labelElevated.Enabled = false;
                textElevated.Enabled = false;
                textElevated.Text = "";
                labelVirtualization.Enabled = false;
                textVirtualized.Enabled = false;
                textVirtualized.Text = "";
            }

            if (tabControl.TabPages[Settings.Instance.TokenWindowTab] != null)
                tabControl.SelectedTab = tabControl.TabPages[Settings.Instance.TokenWindowTab];

            ColumnSettings.LoadSettings(Settings.Instance.PrivilegeListColumns, listPrivileges);
            listPrivileges.AddShortcuts();
        }