我正在尝试使用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();
由于
答案 0 :(得分:1)
嗯,有办法做你要求的。 您需要下载Windows 7 Embedded Standard( WES7 wSP1 )的副本。 WES7包含其他版本的Windows 7所不具备的功能 - 对话框过滤器。 它作为服务运行,允许您指定要自动执行的某些窗口事件,而无需用户交互。
Dialog Filter Editor随EmbeddedSDK \ bin文件夹中的Windows Embedded Standard 7工具一起安装。
您所要做的就是:
通过将必要的Dialog Filter文件复制到C:\ Windows \ System32,将服务添加到Windows。有x86和x64版本,因此请选择正确的架构。
注册文件,并使服务自动运行。
将使用编辑器创建的 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
答案 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" ;
干杯。