繁体   English   中英

注销时,为什么应用程序在Windows上作为系统帐户运行

[英]Why does an application running as the system account on windows when logging off

我有一个ac#应用程序,它在一台机器上的System帐户下启动,并向用户提供一些对话框。 当常规用户注销时,应用程序也会终止。 我本以为,由于它在系统帐户下运行,它会继续运行,尽管用户没有登录。

有关为什么会发生这种情况的任何信

您的应用程序是服务吗? 听起来你想要的是一种服务。 请注意,您可以像任何用户一样运行任何进程,但这不会使其成为服务。 如果您的流程是作为服务实现的,那么即使没有用户登录,它也会继续运行。

如果您希望应用程序在用户注销后继续运行(例如,只要计算机正在运行,就保持状态),您需要一项服务。 但是,强烈建议不要显示UI。 如果您需要长时间运行和UI,请考虑编写用于存储数据的服务,以及每次用户登录时运行的应用程序,该应用程序显示UI并与服务交互。

当用户会话结束他们调用的应用程序时,这是一项安全功能。 如果您需要在用户会话之外运行应用程序,则需要服务,因为它在其自己的会话服务中无法通过消息等“进入”用户会话。

您需要将应用程序作为Windows服务运行。

您需要将应用程序创建为Windows服务。 如果您的应用程序显示对话框,则需要选中“允许服务与桌面交互”并在本地系统帐户下运行它。

但是,更好的方法是使用WCF或Remoting从应用程序中公开可查询的接口,您可以使用单独的应用程序向用户显示该接口。 如果您希望在没有人登录时从您的应用程序收到通知,那么您可能需要考虑发送电子邮件或将事件发布到单独的WCF / Web服务/远程处理端点。

因为该进程是由explorer.exe启动的,所以当用户注销时它将被终止,无论它在哪个帐户下运行。 这就是Windows工作的方式。 要允许进程继续运行,它需要是一个服务,或者可能由任务调度程序启动。

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM