在我登录Windows之前,如何启动WPF应用程序?
本文关键字:启动 WPF 应用程序 何启动 登录 Windows 之前 | 更新日期: 2023-09-27 18:02:06
我想在登录Windows之前运行WPF应用程序。它不应该做任何现有的UI只是调用ApplicationStartup事件-它会触发我需要的功能。
目前我正在使用与应用程序相结合的windows服务,所以服务在登录之前运行。
现在的缺点是,如果不轮询,我的应用程序不知道服务在做什么。
这是一个要求,因为机器可能会崩溃并重新启动,但Windows应该在启动后仍然运行应用程序。
有办法吗?
不,这不可能。WPF应用程序是用户模式应用程序,因此它们必须在登录用户的上下文中运行。由于Windows是一个多用户操作系统,因此有可能操作系统正在运行,但没有用户登录。在这种情况下,没有地方可以运行您的应用程序。
Windows服务是唯一可以做到这一点的东西,这正是因为它们不会在特定的用户上下文中运行。事实上,对于想要创建一个与用户交互的Windows服务的开发人员来说,这个相同的特性经常是一个挫败的来源。这是不可能的(至少在Windows Vista中是不可能的,它修补了以前版本中存在的所有安全漏洞)。
替代解决方案:
-
将您的应用程序添加到默认用户的"启动"目录;文件夹,这将强制每次用户登录到机器时启动它。
在这种情况下,只有当没有用户登录时,它才会不运行,在这种情况下,很难想象你的应用程序/服务实际上对任何人都有好处。
-
配置每台机器在Windows启动时自动以特定用户登录。结合上述方法,您可以解决这样一个事实,即计算机可能在没有用户登录的情况下离开,即使在崩溃/重新启动后也是如此。