在我登录Windows之前,如何启动WPF应用程序?

本文关键字:启动 WPF 应用程序 何启动 登录 Windows 之前 | 更新日期: 2023-09-27 18:02:06

我想在登录Windows之前运行WPF应用程序。它不应该做任何现有的UI只是调用ApplicationStartup事件-它会触发我需要的功能。

目前我正在使用与应用程序相结合的windows服务,所以服务在登录之前运行。

现在的缺点是,如果不轮询,我的应用程序不知道服务在做什么。

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

有办法吗?

在我登录Windows之前,如何启动WPF应用程序?

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

Windows服务是唯一可以做到这一点的东西,这正是因为它们不会在特定的用户上下文中运行。事实上,对于想要创建一个与用户交互的Windows服务的开发人员来说,这个相同的特性经常是一个挫败的来源。这是不可能的(至少在Windows Vista中是不可能的,它修补了以前版本中存在的所有安全漏洞)。

替代解决方案:

  • 将您的应用程序添加到默认用户的"启动"目录;文件夹,这将强制每次用户登录到机器时启动它。

    在这种情况下,只有当没有用户登录时,它才会运行,在这种情况下,很难想象你的应用程序/服务实际上对任何人都有好处。

  • 配置每台机器在Windows启动时自动以特定用户登录。结合上述方法,您可以解决这样一个事实,即计算机可能在没有用户登录的情况下离开,即使在崩溃/重新启动后也是如此。

虽然有一个单独的用户模式应用程序(WPF, WinForms,或者其他什么)可以显示一个UI控制在后台运行的Windows服务的模式是相当常见的。我不知道你觉得这个装置有什么问题。在需要获取信息时轮询服务是没有问题的。根据定义,服务不需要用户干预。将需要用户干预的部分分离到一个单独的应用程序中不仅是典型的做法,而且是必要的。