我有一个需要坐在后台的程序,当用户连接到 RDP 会话时,它会进行一些环境设置,然后启动一个程序。当程序关闭时,它会做一些内务处理并注销会话。
我目前的做法是让终端服务器启动这个应用程序。这是作为 Windows 窗体应用程序构建的,以防止控制台窗口出现:
public static void Main()
{
//(Snip...) Do some setup work
Process proc = new Process();
//(Snip...) Setup the process
proc.Start();
proc.WaitForExit();
//(Snip...) Do some housecleaning
NativeMethods.ExitWindowsEx(0, 0);
}
我真的很喜欢这个,因为任务栏中没有项目,alt-tab 中也没有任何显示。但是,为了做到这一点,我放弃了对像 So Now 这样的功能的void WndProc(ref Message m)
访问权限如果用户在关闭程序之前注销或断开会话。WTS_REMOTE_DISCONNECT
WTS_SESSION_LOGOFF
bool WTSRegisterSessionNotification(IntPtr hWnd, int dwFlags);
关于如何吃蛋糕和吃蛋糕有什么建议吗?