Beispiel #1
0
        /// <summary>Returns a DialogResult indicating the user action.</summary>
        /// <param name="owner">The System.Windows.Forms.IWin32Window the dialog will display in front of.</param>
        /// <remarks>
        /// Sets the name, password and SaveChecked accessors to the state of the dialog as it was dismissed by the user.
        /// </remarks>
        private DialogResult ShowDialog(IWin32Window owner)
        {
            // set the api call parameters
            StringBuilder name = new StringBuilder(Credui.MaxUsernameLength);

            name.Append(this.Name);

            StringBuilder password = new StringBuilder(Credui.MaxPasswordLength);

            password.Append(this.Password);

            int saveChecked = Convert.ToInt32(this.SaveChecked);

            Credui.Info  info  = this.GetInfo(owner);
            Credui.Flags flags = this.GetFlags();

            // make the api call
            Credui.ReturnCodes code = Credui.PromptForCredentials(
                ref info,
                this.Target,
                IntPtr.Zero, 0,
                name, Credui.MaxUsernameLength,
                password, Credui.MaxPasswordLength,
                ref saveChecked,
                flags
                );

            // clean up resources
            if (this.Banner != null)
            {
                Gdi32.DeleteObject(info.HbmBanner);
            }

            // set the accessors from the api call parameters
            this.Name        = name.ToString();
            this.Password    = password.ToString();
            this.SaveChecked = Convert.ToBoolean(saveChecked);

            return(CredentialsDialog.GetDialogResult(code));
        }
Beispiel #2
0
        /// <summary>Returns the flags for dialog display options.</summary>
        private Credui.Flags GetFlags()
        {
            Credui.Flags flags = Credui.Flags.GenericCredentials;

            // grrrr... can't seem to get this to work...
            // if (incorrectPassword) flags = flags | CredUI.CREDUI_FLAGS.INCORRECT_PASSWORD;

            if (this.AlwaysDisplay)
            {
                flags = flags | Credui.Flags.AlwaysShowUi;
            }

            if (this.ExcludeCertificates)
            {
                flags = flags | Credui.Flags.ExcludeCertificates;
            }

            if (this.Persist)
            {
                flags = flags | Credui.Flags.ExpectConfirmation;
                if (this.SaveDisplayed)
                {
                    flags = flags | Credui.Flags.ShowSaveCheckBox;
                }
            }
            else
            {
                flags = flags | Credui.Flags.DoNotPersist;
            }

            if (this.KeepName)
            {
                flags = flags | Credui.Flags.KeepUsername;
            }

            return(flags);
        }