当应用程序作为 Windows 服务(用 .NET 编写)运行时,检测用户是否登录以及用户登录时能够开始显示必要的对话框,或者当用户注销时,可以阻止对话框的显示?
我希望我的措辞正确:)
最佳答案
您根本不应该通过服务执行此操作。首先,默认情况下服务无权访问桌面。您可以在 Vista 之前的 Windows 版本中通过选中服务属性对话框上的“允许服务与桌面交互”复选框来更改此设置,但这是一个非常非常糟糕的主意。
在 Vista 中,服务根本无法与桌面交互。
您假设当时计算机上只有一个交互式用户,但情况并非总是如此。由于终端服务的存在,您可以让多个用户登录到交互式 session 。
您应该做的是创建一个小型客户端程序,该程序在用户登录时启动。该程序将通过某种分布式技术(例如远程处理或 WCF,我推荐后者)与服务交互。根据从服务器接收到的通信,客户端程序可以启动对话框和用户界面元素来与用户交互。
关于.net - 如何检测窗口是否可以显示?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/466199/