如何自动绕过 RDP 登录消息?

4
我正在尝试使用c#通过远程桌面登录服务器。我可以使用下面的代码和AxMSTSCLib建立连接。然而,我被卡在了我们域中的安全提示上。
当手动登录时,需要单击提示上的“确定”按钮才能完成登录。我一直无法找到通过应用程序与此确认按钮进行交互的方法。我曾尝试过SendKeys的变体,使用交互服务发送键事件,查找光标位置并发送鼠标单击事件等等...
我已经没有更多的想法了。
rdp.Server = server;
rdp.Domain = domain;
rdp.UserName = userName;

IMsTscNonScriptable secured = (IMsTscNonScriptable)rdp.GetOcx();
secured.ClearTextPassword = password;
rdp.StartConnected = 1;

rdp.Connect();

谢谢


1
你有什么问题,以及你遇到了哪些错误? - PiousVenom
安全提示是在 RDP 会话内还是外部?(您能将其拖到 RDP 框架之外吗?) - Scott Chamberlain
在 RDP 会话内部 - dgates82
你为什么要创建这个RDP会话,使用你的程序的人为什么不能点击“确定”? - Scott Chamberlain
谢谢pst,我试图在不写段落的情况下总结它。你总结得更好。 - dgates82
显示剩余4条评论
2个回答

2
好的,有一种方法可以做到您所要求的。 您需要下载Windows 7嵌入式标准版(WES7 wSP1)的副本。 WES7包含其他版本的Windows 7没有的东西-对话框过滤器。 它作为服务运行,并允许您指定某些窗口事件自动执行,无需用户交互。
对话框过滤器编辑器安装在EmbeddedSDK \ bin文件夹中的Windows嵌入式标准7工具中。
您只需要:
1.通过将必要的Dialog Filter文件复制到C:\ Windows \ System32来将服务添加到Windows。有x86和x64版本,因此选择正确的架构。 2.注册文件并启用服务自动运行。 3.将使用编辑器创建的ConfigurationList.xml文件添加到C:\ ProgramData \ Microsoft \ DialogFilter。此位置默认隐藏,请确保在Windows资源管理器中显示隐藏的文件和取消隐藏受保护的系统文件。
实际上,我已经创建了ConfigurationList.xml文件,因此您只需复制以下代码并将其保存为“ ConfigurationList.xml”:
<?xml version="1.0" encoding="utf-8"?> 
<CL:dialogs xmlns:CL="urn:Dialogs"> 
    <dialog> 
    <ProcessImageName>rundll32.exe</ProcessImageName> 
    <Title>Remote Desktop Connection</Title> 
    <Class>#32770</Class> 
    <Buttons> 
      <Button>OK</Button> 
      <Button>Cancel</Button> 
      <Button>Close</Button> 
    </Buttons> 
    <Actions> 
      <Action>OK</Action> 
    </Actions> 
  </dialog> 
</CL:dialogs>

如您所见,当进行RDP连接时弹出的RDP对话框中,该操作自动设置为按下“确定”按钮

有关来自MS的对话框过滤器的更多信息: https://msdn.microsoft.com/en-US/library/ff794135(v=winembedded.60).aspx


谢谢Eric。不确定为什么我现在才看到这个答案,而且我已经不在那家公司工作了,无法测试它,但还是感谢你的详细回答。 - dgates82

1
我刚找到了一个更简单的方法: 有一个名为ClickOff的免费小应用程序,它的工作方式与Windows嵌入式标准7的DialogFilter非常相似。
您可以在这里下载ClickOff v1.90。
安装ClickOff后,您可以定义要捕获的窗口以及其中要单击的按钮。唯一的问题是您必须将其添加到启动应用程序中。
我已经创建了一个clickoff.lst文件,该文件会在30秒的RDP超时弹出窗口上单击“确定”。该文件应放置在C:\Users\USERNAME\AppData\Roaming\ClickOff中。以下是文件的内容:
1.900
WINDOWTITLE="Remote Desktop Connection" BUTTONTEXT="OK" MSGTEXT="CompName\\UserName wants to connect to this machine.\r\n\r\nClick OK to disconnect your session immediately or click cancel to stay connected.\r\n\r\nOtherwise, you will be disconnected in 30 seconds." BUTTONID="1" MSGID="65535" DLGID="0" CLKEVENT="17" CLKMETHOD="3" TIMESCLICKED="0" WAIT="0" BPOSX="0" BPOSY="0" ;

干杯。


网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接