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

Aur*_*kas 0 c# windows wpf windows-services

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

目前我正在将app服务与app结合使用,因此服务在登录前运行.

现在的缺点是我的应用程序在不轮询的情况下不知道服务正在做什么.

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

有什么办法吗?

Cod*_*ray 7

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

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

替代方案:

  • 将您的应用程序添加到默认用户的"Startup"文件夹,这将强制每次用户登录到计算机时启动它.

    在这种情况下,它没有运行的唯一时间是没有用户登录,在这种情况下,很难想象您的应用程序/服务实际上正在做任何好事.

  • 将每台计算机配置为在Windows启动时自动以特定用户身份登录.结合上述内容,您可以解决这样一个事实:即使在崩溃/重启后,计算机也可能在没有用户登录的情况下离开.

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