c# - 如何在用户登录之前运行 Windows 应用程序?

标签 c# .net windows windows-services

<分区>

Possible Duplicate:
How can a WPF application be launched before I logon to Windows?

我用 C# 编写了一个应用程序。我想在登录 Windows 操作系统之前运行我的应用程序(在预加载 Windows 操作系统之后)。 我该怎么做?

最佳答案

执行此操作的唯一方法是创建 Windows 服务而不是应用程序。由于服务不是用户模式应用程序,因此即使没有用户登录,它们也可以运行。

但是,这还有其他注意事项。大多数开发人员仅了解以上内容并认为他们需要编写 Windows 服务。这是不正确的:实际上,相当您实际上需要编写其中一个。如上所述,它们不是用户模式应用程序,因此不能显示任何类型的用户界面。它们被设计为在后台运行,并且在用户不需要以任何方式与它们交互的情况下运行,除了 [很少] 停止和启动它们。

如果您已经拥有带有用户界面的常规应用程序,那么创建 Windows 服务不适合您。你的应用程序不会移植到服务,你会回来问六个关于看似无法解释的行为、系统崩溃和无法做各种事情的问题。服务不是应用程序的替代品:它是一种完全不同的产品,需要完全不同的设计方法。

那么您有哪些选择?嗯,基本上没什么。 Windows 是一个多用户操作系统。没有用户登录就无法运行用户模式应用程序。您可以做的最好的事情是将您的应用程序添加到所有用户帐户共享的“启动”文件夹中,然后将机器配置为在启动时自动登录特定用户。这样,计算机永远不会在没有用户登录的情况下运行,因此您的应用程序也不会运行。

为此,您需要在计算机上配置组策略,这将要求您具有对它们的管理访问权限,并且无法在不属于您的计算机(例如属于客户的计算机)上运行).这实际上是一件好事,因为对于一般用途的应用程序来说,这是极差的设计。

在我们专为系统管理员设计的姊妹站点 Server Fault 上询问有关设置组策略的更多问题.

关于c# - 如何在用户登录之前运行 Windows 应用程序?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/6793649/

相关文章:

.net - File.Create() 之后的 "File is being used by another process"

c# - Visual Studio 2015 中的共享项目和类库有什么区别?

windows - 如何找到 Apache 的 httpd.exe 安装位置?

c# - ASP.NET MVC : LogOut Heartbeat function

c# - SAP Crystal Reports v13 运行时未安装在本地计算机上

.net - 在 xsd 中使用 key 的正确方法

c++ - 创建DLL时导出所有符号

c# - 具有 2 个参数问题的 ASP.NET 2.0 Web API

c# - ASP.net Razor - 使用 GMail SMTP 从网站发送电子邮件

windows - 检查应用程序是否在 golang 中以管理员身份运行