如何在RDP上自动绕过登录消息

本文关键字:登录 消息 RDP | 更新日期: 2023-09-27 18:06:01

我正在尝试使用c#通过远程桌面登录服务器。我能够使用AxMSTSCLib和下面的代码启动连接。然而,我被我们域名的安全通知卡住了。

当手动登录时,它要求您在登录完成之前单击通知上的ok。我一直无法找到无论如何通过我的应用程序与这个OK按钮进行交互。我尝试了SendKeys的变体,使用互操作服务发送键事件,找到光标位置并发送鼠标单击事件……

我已经没有主意了。

rdp.Server = server;
rdp.Domain = domain;
rdp.UserName = userName;
IMsTscNonScriptable secured = (IMsTscNonScriptable)rdp.GetOcx();
secured.ClearTextPassword = password;
rdp.StartConnected = 1;
rdp.Connect();

谢谢

如何在RDP上自动绕过登录消息

好吧,有一种方法可以满足你的要求。您需要下载Windows 7嵌入式标准(WES7 wSP1)的副本。WES7包含了其他版本的Windows 7没有的东西——对话框过滤器。它作为服务运行,并允许您指定某些自动执行的窗口事件,而无需用户交互。

对话框过滤器编辑器与Windows嵌入式标准7工具一起安装在EmbeddedSDK'bin文件夹中。

你所要做的就是:

  1. 通过将必要的对话框过滤器文件复制到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对话框中自动按下OK按钮

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

我找到了一个更简单的方法:有一个免费的小应用程序叫做ClickOff,它的工作方式与Windows Embedded Standard 7 DialogFilter非常相似。

你可以在这里下载ClickOff v1.90

安装ClickOff后,您可以定义捕获哪个窗口,以及单击其中的哪个按钮。唯一的问题是你必须把它添加到你的启动应用程序。

我已经创建了一个点击关闭。在30秒的RDP超时弹出窗口中单击OK。该文件应放在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" ;

欢呼。