我检查了另一个帖子(当我登录 Windows 时自动运行脚本),但它并没有解决我的具体问题。
我需要在建立连接时运行脚本通过我的网络使用 Windows远程桌面连接。
上面列出的线程适用于最初的但是,如果我不注销(这对于我网络上运行的某些进程来说是必要的),那么它不会再次运行该脚本下次有人使用远程桌面连接连接到系统时。以前我们使用 pcAnywhere 来实现这一点,但是在遇到 pcAnywhere 的一些图形问题后,我们决定放弃它,转而使用 RDC。
背景:我们需要在与特定机器建立连接时发送电子邮件。这些系统的登录名将始终相同,并且我们在关闭连接时不会注销。
答案1
据我所知,Windows 没有提供在联系,仅登录。您需要找到一个在 Windows 中注册的程序(使用通知)并监听 WM_WTSSESSION_CHANGE信息。
执行上述操作的程序将收到来自 Windows 的有关用户登录、注销、连接、断开连接以及在连接和登录时启动脚本所需的所有事件的通知。
据我所知,我不知道有任何应用程序(除了 pcAnywhere)可以做到这一点。
答案2
您可以创建一个新的计划任务,并将触发器定义为“在与用户会话建立新连接时”
答案3
使用触发器“连接到用户会话时”
注意:我只注意到问题标记为“XP”/“Server2008”。此处的内容可能仅适用于 Vista/2008R2 及以上版本。
Windows 任务计划程序对此有一个预定义的触发器。它被称为On connection to user session
。
它还允许您区分用户以及本地或远程连接。
创建此触发器时的默认值:Any user
和Connection from remote computer
。这似乎就是您想要的,因此您不必更改它。
来源:Microsoft TechNet:任务计划程序 | 触发器(存档这里。
进一步阅读
当您导出此任务然后查看文件内部时,您将看到这是一个类型为的触发器SessionStateChangeTrigger
:
MSDN 上有详细的文档:
答案4
如果你熟悉.net编程,你可能需要看看Stack Overflow 上的这个帖子。
根据 Steven A. Lowe 的说法:
据称,
System.Windows.Forms.SystemInformation.TerminalServerSession
对于远程桌面会话(或 VNC 会话)来说是正确的
您还可以监控 RDP 上的连接,默认情况下为 TCP 3389。