CredUIPromptForCredentials (credui)
Last changed: -171.251.236.129

.
Summary
TODO - a short description

C# Signature:

    [DllImport("credui")]
    private static extern CredUIReturnCodes CredUIPromptForCredentials(ref CREDUI_INFO creditUR,
      string targetName,
      IntPtr reserved1,
      int iError,
      StringBuilder userName,
      int maxUserName,
      StringBuilder password,
      int maxPassword,
      [MarshalAs(UnmanagedType.Bool)] ref bool pfSave,
      CREDUI_FLAGS flags);

VB Signature:

Declare Function CredUIPromptForCredentials Lib "credui.dll" (TODO) As TODO

User-Defined Types:

    [Flags]
    enum CREDUI_FLAGS
    {
    INCORRECT_PASSWORD = 0x1,
    DO_NOT_PERSIST = 0x2,
    REQUEST_ADMINISTRATOR = 0x4,
    EXCLUDE_CERTIFICATES = 0x8,
    REQUIRE_CERTIFICATE = 0x10,
    SHOW_SAVE_CHECK_BOX = 0x40,
    ALWAYS_SHOW_UI = 0x80,
    REQUIRE_SMARTCARD = 0x100,
    PASSWORD_ONLY_OK = 0x200,
    VALIDATE_USERNAME = 0x400,
    COMPLETE_USERNAME = 0x800,
    PERSIST = 0x1000,
    SERVER_CREDENTIAL = 0x4000,
    EXPECT_CONFIRMATION = 0x20000,
    GENERIC_CREDENTIALS = 0x40000,
    USERNAME_TARGET_CREDENTIALS = 0x80000,
    KEEP_USERNAME = 0x100000,
    }

    public enum CredUIReturnCodes
    {
    NO_ERROR = 0,
    ERROR_CANCELLED = 1223,
    ERROR_NO_SUCH_LOGON_SESSION = 1312,
    ERROR_NOT_FOUND = 1168,
    ERROR_INVALID_ACCOUNT_NAME = 1315,
    ERROR_INSUFFICIENT_BUFFER = 122,
    ERROR_INVALID_PARAMETER = 87,
    ERROR_INVALID_FLAGS = 1004,
    }

Alternative Managed API:

Do you know one? Please contribute it!

Notes:

None.

Tips & Tricks:

Please add some!

Sample Code:

    /// <summary>
    /// Prompts for password.
    /// </summary>
    /// <param name="user">The user.</param>
    /// <param name="password">The password.</param>
    /// <returns>True if no errors.</returns>
    internal static bool PromptForPassword(out string user, out string password)
    {
    // Setup the flags and variables
    StringBuilder userPassword = new StringBuilder(), userID = new StringBuilder();
    CREDUI_INFO credUI = new CREDUI_INFO();
    credUI.cbSize = Marshal.SizeOf(credUI);
    bool save = false;
    CREDUI_FLAGS flags = CREDUI_FLAGS.ALWAYS_SHOW_UI | CREDUI_FLAGS.GENERIC_CREDENTIALS;

    // Prompt the user
    CredUIReturnCodes returnCode = CredUIPromptForCredentials(ref credUI, Application.ProductName, IntPtr.Zero, 0, userID, 100, userPassword, 100, ref save, flags);

    user = userID.ToString();
    password = userPassword.ToString();

    return (returnCode == CredUIReturnCodes.NO_ERROR);
    }

Documentation