Ejemplo n.º 1
0
        /// <summary>Confirmation action to be applied.</summary>
        /// <param name="value">True if the credentials should be persisted.</param>
        public void Confirm(bool value)
        {
            var confirmResult = CredUi.CredUIConfirmCredentials(Target, value);

            switch (confirmResult)
            {
            case CredUi.ReturnCodes.NO_ERROR:
                break;

            case CredUi.ReturnCodes.ERROR_INVALID_PARAMETER:
                // for some reason, this is encountered when credentials are overwritten
                break;

            default:
                throw new ApplicationException($"Credential confirmation failed: {confirmResult}");
            }
        }
Ejemplo n.º 2
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.MAX_USERNAME_LENGTH);

            name.Append(Name);

            StringBuilder password = new StringBuilder(CredUi.MAX_PASSWORD_LENGTH);

            password.Append(Password);

            int saveChecked = Convert.ToInt32(SaveChecked);

            CredUi.INFO      info      = GetInfo(owner);
            CredUi.CredFlags credFlags = GetFlags();

            // make the api call
            CredUi.ReturnCodes code = CredUi.CredUIPromptForCredentials(
                ref info,
                Target,
                IntPtr.Zero, 0,
                name, CredUi.MAX_USERNAME_LENGTH,
                password, CredUi.MAX_PASSWORD_LENGTH,
                ref saveChecked,
                credFlags
                );

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

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

            return(GetDialogResult(code));
        }