我正在创建一个对话框,通过调用CredUIPromptForCredentials接口来请求管理凭据。以下是代码的一小段:
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”。我想不出原因是什么?如有任何提示,我们将不胜感激!
发布于 2012-02-25 01:45:26
发布您的CREDUI_INFO声明。它应该看起来像这样:
struct CREDUI_INFO
{
public int cbSize;
public IntPtr hwndParent;
public string pszMessageText;
public string pszCaptionText;
public IntPtr hbmBanner;
}https://stackoverflow.com/questions/9435159
复制相似问题