在login到Windows之前,如何启动WPF应用程序?

我想在login到Windows之前运行WPF应用程序。 它不应该做任何现有的UI只是调用ApplicationStartup事件 – 它会触发我需要的function。

目前,我正在使用Windows服务与应用程序结合,所以服务在login之前运行。

现在的缺点是,我的应用程序不知道什么服务在做没有投票。

这是一个需求,因为机器可以崩溃并重新启动,但Windows启动后仍然应该运行应用程序。

有什么办法吗?

Solutions Collecting From Web of "在login到Windows之前,如何启动WPF应用程序?"

不,这是不可能的。 WPF应用程序是用户模式的应用程序,因此它们必须在登录用户的上下文中运行。 由于Windows是一个多用户操作系统,操作系统可能正在运行,但是没有用户登录。在这种情况下,应用程序无法运行。

Windows服务是唯一可以做到这一点的事情,这正是因为它们不在特定的用户环境下运行。 实际上,对于想要创建与用户交互的Windows服务的开发人员来说,这个相同的功能往往是令人沮丧的来源。 这是不可能的 (至少不是Windows Vista,它修补了以前版本中存在的所有安全漏洞 )。

替代方案:

  • 将您的应用程序添加到默认用户的“启动”文件夹,每次用户登录到计算机时都会强制启动它。

    在这种情况下,唯一不会运行的是没有用户登录的情况,在这种情况下,很难想象你的应用/服务实际上在做任何有用的事情。

  • 将每台计算机配置为在Windows启动时自动以特定用户身份登录。 结合上面的内容,你可以解决这个事实:即使在用户没有登录的情况下,即使在发生崩溃/重启之后,计算机仍然可以被保留下来。

虽然具有单独的用户模式应用程序(WPF,WinForms或其他)的模式可以显示UI控件,但在后台运行的Windows服务是相当常见的。 我不确定你认为这个设置有什么问题。 在需要信息时轮询服务没有任何问题。 按定义服务不需要用户干预。 将需要用户干预的部分分离成单独的应用程序不仅是典型的做法,而且是必要的。