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

时间:2013-03-25 20:49:26

标签: c# remote-desktop

我正在尝试使用c#通过远程桌面登录服务器。我可以使用AxMSTSCLib和下面的代码启动连接。但是,我坚持使用我们域名的安全通知。

手动登录时,需要您在登录完成前单击“确认”。我一直无法通过我的应用程序找到与此OK按钮进行交互。我尝试了SendKeys的变体,使用互操作服务发送关键事件,找到光标位置并发送鼠标点击事件......

我这里的想法已经不多了。

rdp.Server = server;
rdp.Domain = domain;
rdp.UserName = userName;

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

rdp.Connect();

由于

2 个答案:

答案 0 :(得分:1)

嗯,有办法做你要求的。 您需要下载Windows 7 Embedded Standard( WES7 wSP1 )的副本。 WES7包含其他版本的Windows 7所不具备的功能 - 对话框过滤器。 它作为服务运行,允许您指定要自动执行的某些窗口事件,而无需用户交互。

Dialog Filter Editor随EmbeddedSDK \ bin文件夹中的Windows Embedded Standard 7工具一起安装。

您所要做的就是:

  1. 通过将必要的Dialog Filter文件复制到C:\ Windows \ System32,将服务添加到Windows。有x86和x64版本,因此请选择正确的架构。

  2. 注册文件,并使服务自动运行。

  3. 将使用编辑器创建的 ConfigurationList.xml 文件添加到 C:\ ProgramData \ Microsoft \ DialogFilter 。 此位置被隐藏隐藏,因此请确保在Windows资源管理器中显示隐藏文件并取消隐藏受保护的系统文件。

  4. 我实际上已经创建了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

答案 1 :(得分:0)

刚刚找到了一种更简单的方法: 这是一款名为 ClickOff 的免费小应用,其工作方式与Windows Embedded Standard 7 DialogFilter 非常相似。

您可以下载 ClickOff v1.90 here

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

我已经创建了一个clickoff.lst文件,在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" ;

干杯。