【发布时间】:2011-04-11 20:49:40
【问题描述】:
我有一个用 C# 编写的服务,它监视一组文件。如果其中一个文件的修改时间超过 4 小时,它使用 Growl 通知最终用户。我见过 Growl.exe 没有在当前用户的会话下运行的情况,因此他们没有收到更新。我希望我的服务检查以确保 Growl 正在运行(Growl.exe 或者我可以在某处查找应用程序 ID?),如果没有,则启动它。如何确保 Growl 始终在运行此服务的任何机器上的当前用户会话中运行?
【问题讨论】:
-
什么是“当前用户”?从服务的角度来看,它是运行服务的用户(即本地系统、LocalService 等)。如果您的意思是当前的 interactive 用户,是哪一个?可能有几个打开的交互式会话(例如,如果它是终端服务器)...
-
Session 0 是一个合理的假设。我愿意将此限制为物理控制台上的用户。我应该提一下,目前只有 Windows 客户端机器正在运行它。它不太可能在服务器上运行。
-
请记住,Windows 的桌面版本也可以通过快速用户切换同时拥有多个用户。
-
这是一个非常好的观点 Mystere。以后我一定会牢记这一点。