在系统启动时启动应用程序而无需登录

Posted

技术标签:

【中文标题】在系统启动时启动应用程序而无需登录【英文标题】:Start an application at system start without login 【发布时间】:2015-10-29 17:23:58 【问题描述】:

我们有一个新服务器正在运行,并且我们有一些新程序正在执行导入例程。到目前为止一切顺利...但是有一个程序放入自动启动文件夹。所以在管理员登录之前它不会运行,如果我们注销它就会停止

我想把它放到一个单独的会话中,这样它就可以在没有任何交互的情况下工作,只需在启动时使用任务调度程序启动它。这是正确的方法吗?如果我稍后登录然后退出是否安全?

非常感谢!

编辑:应用程序在运行时会在任务栏中显示为一个符号,可以通过它进行配置。如果我改变,我必须知道什么?

编辑:这不是我的应用程序,我无法将其重写为服务。

【问题讨论】:

【参考方案1】:

您需要将程序作为 Windows 服务运行。一种方法是使用sc.exe 程序:

> sc create <new_service_name> binPath= "c:\myapp\myapp.exe"

你可以阅读它here。

【讨论】:

我们正在运行 Server 20012 R2,最好的方法是什么?【参考方案2】:

您需要将您的应用程序分成两部分。

要让它在没有用户会话的情况下运行,您需要一个 Windows 服务。那应该处理所有背景的东西。然后您可以注册该服务并将其设置为在系统启动时启动。

要让它有一个 UI 并显示在通知区域中,您需要一个 Windows 应用程序。这将像往常一样自动启动,并将与服务通信 - 例如,通过命名管道。

虽然仍然(几乎)可以在没有用户会话的情况下运行 UI 应用程序,但维护它只是为了向后兼容,并且已经显示出很多问题。将来它可能会被完全删除,因为它违反了很多合同。不要依赖这样的黑客攻击。

【讨论】:

这不是我的应用程序,我无法拆分它。我只是希望服务器在没有管理员登录的情况下启动应用程序 @Daniel 太糟糕了。您要么必须让某人始终保持登录状态,要么您需要找到一个不同的应用程序来处理这项工作。【参考方案3】:

我在启动时使用任务调度程序成功添加了应用程序。登录和注销不会退出应用程序,但不显示符号。请在我的附加问题中添加详细信息,我会将您的答案标记为已接受。

编辑:最终使用了这个。如果我必须配置,我会在任务管理器中停止应用程序并通过链接重新启动它。之后我退出应用程序并通过任务计划程序手动启动重新启动它。

【讨论】:

嗨,你有没有试过把你的应用程序的快捷方式放在windows启动文件夹中,让它在重启后自动运行?如果是这样,你知道它是否会在没有登录的情况下运行吗? 用户启动文件夹中的应用程序在没有登录的情况下将无法启动。【参考方案4】:

我无法让“sc create”命令工作。相反,我使用 regedit 手动编辑了注册表。我在 HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\services 中添加了一个新键。

我使用以下页面来确定所需的参数及其值。请注意,名称不会映射。

https://docs.microsoft.com/en-us/windows-hardware/drivers/install/inf-addservice-directive

【讨论】:

【参考方案5】:

老问题,但对于任何在这里绊倒的人。使用 srvany 将程序设置为自定义服务。

请注意,当您使用 Dropbox、googledrive 等进行此操作时,您需要停止服务,然后正常打开程序以进行密码、更新等更改。

下面是一个足够好的介绍。

https://www.iceflatline.com/2015/12/run-a-windows-application-as-a-service-with-srvany/

在此处下载工具包

https://www.microsoft.com/en-us/download/details.aspx?id=17657

【讨论】:

【参考方案6】:

将用户应用程序转换为服务并使用 Regsvr32installutil.exe 进行注册。它将使用 SYSTEM 用户帐户启动服务。这是一个高特权帐户。 注意:您不能运行任何基于 Window 的应用程序。甚至是一个消息窗口。

【讨论】:

【参考方案7】:

这是一个老问题,但我最近以另一种方式解决了......

(在我使用计划任务启动之前,但这给我带来了很多软件的各种问题......)

出于各种原因,某些程序也必须在用户级别运行...甚至在特定用户会话中运行...

所以我发现最好的方法是使用像 Sysinternal/Autoruns 这样的工具来编程自动登录到特定用户(它是一个注册表设置)......并在该用户的启动文件夹中(或任何其他“自动运行/自动启动”任务)...运行首先锁定屏幕的脚本...然后运行其他预期的程序...将在该用户配置文件下运行...

因此您可以选择标准用户或管理员...甚至可以在管理员模式下从标准用户启动程序...

希望对您有所帮助... 这个“hack”解决了我启动应用程序的许多问题......

【讨论】:

不会在客户服务器上这样做,但它可以工作:)【参考方案8】:

我还使用任务调度程序在系统启动时创建应用程序。需要注意的是,如果你想用于挖矿,你必须在“设置”中禁用一个选项,它说如果应用程序连续运行超过三天就会结束。

真的很棒!

【讨论】:

以上是关于在系统启动时启动应用程序而无需登录的主要内容,如果未能解决你的问题,请参考以下文章

让 WAMP 在 Windows 启动时自动启动(无需登录或任何 UAC 干扰)

在 DEB 安装后将用户添加到组而无需重新启动

怎么把程序作为服务来运行?

UWP 后台任务系统关闭

SQL server无法启动服务,提示“错误1069: 由于登录失败而无法启动服务”

如何在Ubuntu启动时禁用声音效果?