【问题标题】:Inject text in a rundll32.exe window在 rundll32.exe 窗口中注入文本
【发布时间】:2013-11-09 04:01:13
【问题描述】:

我必须在 rundll32.exe 进程窗口中输入用户名/密码。我坚持以下几点:

  1. 从 rundll32.exe 进程获取登录窗口句柄
  2. 聚焦窗口
  3. 在2个文本框中注入文本并点击确定按钮

是否可以在 .NET 中做到这一点,或者我必须求助于较低级别的 win32 api?任何人都这样做过并且可以指出我正确的方向吗?

【问题讨论】:

  • 你到底想做什么?让用户输入许可证密钥或类似内容?还是您需要他们的 Windows 登录?您是否要让他们注册为管理员?
  • @Ben 我正在尝试在之前由代码创建的交换 mapi 配置文件中输入用户名/密码。 mapi32.dll api 不公开提供凭据的函数,它从 windows 帐户获取它们,如果它们与 AD 中的交换帐户不匹配(就是这种情况),则提示输入密码。我需要检索此窗口提示并注入凭据以确保一切都保持全自动
  • 好的,因此您正在尝试从 rundll32.exe 进程中检索 MAPI 应用程序(可能是 Outlook)的 Exchange 登录对话框的窗口句柄...msdn.microsoft.com/en-us/library/…。或者,您可以使用 NetUseAdd 提前建立 NETBIOS 会话来建立会话......msdn.microsoft.com/en-us/library/windows/desktop/…

标签: c# c++ winapi autologin rundll32


【解决方案1】:

您正在尝试从 rundll32.exe 进程检索 MAPI 应用程序(可能是 Outlook)的 Exchange 登录对话框的窗口句柄。这可以使用 SendKeys 类从 .Net 完成,但这并不完全可靠:

或者,您可以使用 NetUseAdd 提前建立 NETBIOS 会话来建立会话。如果成功,则无需输入用户名和密码。我不知道这是否适用于 Exchange,但它确实适用于其他一些使用集成身份验证的应用程序:

【讨论】:

  • 没有窗口句柄?我可以使用带有 user32.dll 的 windows 标题来检索它。然而,我试图聚焦窗口失败了
  • netbios 会话很聪明,可能会起作用。我试试看,谢谢提示
  • @Machinegon,首先尝试使用“NET USE”,如以下问题所示:stackoverflow.com/questions/5237654/… 如果可行,那么NetUseAdd 也应该可行。
猜你喜欢
  • 1970-01-01
  • 2021-12-20
  • 1970-01-01
  • 2011-06-09
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2013-04-16
  • 1970-01-01
相关资源
最近更新 更多