运行 远程桌面连接上的 C# Winform 程序

Run C# Winform Program on Remote Desktop Connection

简短版本: 如何向远程登录 Windows 服务器环境的用户显示我的 Winforms 应用程序?

背景: 我正在将 C# Winforms 应用程序部署到许多不同的 Windows 服务器,一些是 2008 年的,一些是 2012 年的。当用户登录到其中一个通过远程桌面访问这些服务器,我希望表单立即显示在用户屏幕上。该程序本身是一种基本形式,它写入应用程序部分的 Windows 事件日志。

目前有效: 当用户远程登录时,我已经成功地让程序在 Windows Server 2008 机器上启动。我通过创建一个由用户登录触发的计划任务来做到这一点。这是执行此操作的批处理文件:

SCHTASKS /Create /TN "MyLogonTask" /TR "C:\Path\To\Program.exe" /SC ONLOGON /IT

问题如下:当创建任务的用户以外的用户登录时,表单不会为他们显示。更具体地说,任务确实开始了,但表单只显示 创建任务的用户, 而不是 实际登录的用户。

我所做的: 我试过更改任务内部的设置,以及使用和不使用管理员权限启动程序。此外,我确实尝试删除并重新创建不同用户的任务,并且每次只为创建计划任务的用户启动表单。到目前为止,我还没有成功地为正确的用户显示程序。

您可以在“启动”文件夹中放置一个快捷方式。此文件夹的位置可能因 OS 而异,但在 2012 R2 上,用户一在这里:

C:\Users\[USER]\AppData\Roaming\Microsoft\Windows\Start Menu\Programs\Startup

机器一在这里:

C:\ProgramData\Microsoft\Windows\Start Menu\Programs\StartUp