Заголовок и сообщение показывают только первую букву при вызове CredUIPromptForCredentials API - PullRequest
0 голосов
/ 24 февраля 2012

Я создаю диалог, запрашивающий административные учетные данные, вызывая CredUIPromptForCredentials API. Вот фрагмент кода:

     int maxUserID = 100;
     int maxPassword = 100;
     int maxDomain = 100;
     StringBuilder userID = new StringBuilder(maxUserID);
     StringBuilder userPassword = new StringBuilder(maxPassword);
     StringBuilder userDomain = new StringBuilder(maxDomain);

     bool getCredential = false;

     // Setup the flags and variables         
     CREDUI_INFO credUI = new CREDUI_INFO();
     credUI.cbSize = Marshal.SizeOf(credUI);
     credUI.pszCaptionText = "Title";
     credUI.pszMessageText = "Please login as an administrator.";
     credUI.hwndParent = hwndParent;
     bool save = false;

     // for Windows XP
     if (IsWindowsXP)
     {            
        CREDUI_FLAGS flags = CREDUI_FLAGS.DO_NOT_PERSIST | CREDUI_FLAGS.REQUEST_ADMINISTRATOR;
        CredUIReturnCodes returnCode1;

        returnCode1 = PInvoke.CredUIPromptForCredentials(ref credUI, serverName, IntPtr.Zero, 0, userID, maxUserID, userPassword, maxPassword, ref save, flags);
        if (returnCode1 == CredUIReturnCodes.NO_ERROR)
        {
           getCredential = true;
        }
     } 

Однако в Windows XP только первые буквы заголовка и сообщения появляются, в моем случае, «T» и «P». И я не могу понять, почему? Любые советы будут с благодарностью!

1 Ответ

1 голос
/ 24 февраля 2012

Разместите вашу декларацию CREDUI_INFO. Это должно выглядеть примерно так:

    struct CREDUI_INFO
    {
        public int cbSize;
        public IntPtr hwndParent;
        public string pszMessageText;
        public string pszCaptionText;
        public IntPtr hbmBanner;
    }
...