是否可以通过编程方式填写Windows凭据提示?

时间:2012-04-20 03:37:08

标签: wpf winapi windows-authentication credentials

健壮性,稳定性和你不应该这样做的问题除外,有没有人通过代码填写Windows凭证提示(这样就是这样:)

windows security prompt

是否可以通过Win32 API或使用SendKeys / send mouse / UI Automation与这些对话框进行交互?任何人的想法/提示将不胜感激!

2 个答案:

答案 0 :(得分:0)

使用像AHK (Auto HotKey)这样的东西,它是一种可以编译成EXE的简单语言,专为自动键盘和鼠标而设计。

或者你可以从WPF做到: http://social.msdn.microsoft.com/Forums/en-US/wpf/thread/6fc7f1f6-f3e2-4b32-9d2b-9c7a2680e04a/

或者用户只需勾选“记住我的凭据”

即可

答案 1 :(得分:0)

我最终使用UI Automation framework,这允许我获取对凭证提示的引用,然后将其填写并以这种方式完成。

代码段:

AutomationElement desktop = AutomationElement.RootElement;
//get all windows on the desktop
AutomationElementCollection windows = desktop.FindAll(TreeScope.Descendants, new PropertyCondition(AutomationElement.ControlTypeProperty, ControlType.Window));
         foreach (AutomationElement window in windows)
        {
            if (window.Current.ClassName.Equals("#32770"))   //security dialog
            {

                // access the appropriate AutomationElements to enter credentials here

            }
        }

要与元素交互,您可以获取相应的Pattern对象并调用其方法(例如,Textboxes有一个ValuePattern,它具有.SetValue()方法。

我还使用UISpy来查找ClassNames,AutomationIds等所有值,以帮助通过.FindAll()和PropertyConditions对象找到正确的项目。