在 Windows Server 启动时自动运行程序
Posted
技术标签:
【中文标题】在 Windows Server 启动时自动运行程序【英文标题】:Automatically run program on Windows Server startup 【发布时间】:2011-08-24 14:27:38 【问题描述】:我正在尝试在始终打开的 Windows 服务器上创建和安装 .NET 应用程序,但我遇到了问题。我听说我不应该让它成为 Windows 服务(并且个人更愿意有一个对话应用程序,以便我可以看到进度等),所以我正在尝试使用任务调度程序。但是,任务调度程序一直试图过早关闭我的应用程序,而它应该只打开它并保持打开状态。
有什么想法可以让我的对话应用程序在我的服务器上启动时运行(并保持运行)?
【问题讨论】:
好的,我已经通过创建一个打开我的主程序的程序并让任务调度程序打开第一个程序来让它工作。不知何故,我认为这不是最好的方法,还有其他建议(除了提供服务)吗? 【参考方案1】:您可以使用计划任务来执行此操作,该任务不会在用户登录/注销时出现问题。
-
打开任务计划程序,Windows 键 + R
Taskschd.msc
-
点击操作菜单 > 创建任务
-
将用户更改为管理员或者最好是服务帐户,并记下无论用户是否登录都运行选项:
-
设置登录时:
-
设置要启动的程序:
【讨论】:
这仅适用于用户登录。因此,如果服务器由于某种原因重新启动,此任务将在您登录之前永远不会运行。 @Max 参见步骤 3。无论用户是否登录都运行【参考方案2】:你应该做一个 Windows 服务;这是唯一可靠的方法。 否则,例如,如果用户注销,您将遇到问题。
如果你想要 UI,你可以制作一个单独的 GUI 与服务通信(可能使用 WCF)。
【讨论】:
我怎样才能让服务提供反馈,并能够即时打开/关闭它? 他能否创建一个 Windows 服务来确保他的对话应用程序始终运行? 编写一个与(使用 WCF)通信并控制(使用ServiceController
)服务的 GUI。
也许,但我不建议这样做。一方面,它会更难维护。
@Rob:这些是针对登录用户的。【参考方案3】:
这是一个非常古老的问题,但对于那些通过 Google 来到这里的人来说:
启动命令提示符并输入shell:Startup
这将在 Startmenu/Programs/Startup 原本隐藏的 AppData 路径中打开一个窗口 -> 为您要启动的程序添加可执行文件的快捷方式。
这当然只适用于您当时使用的登录帐户。
所有用户输入shell:Common Startup
【讨论】:
【参考方案4】:我更喜欢在任务计划程序中创建任务并将触发器设置为“启动时”,但您也可以使用启动脚本。
您还可以使用本地组策略编辑器(执行 gpedit)并添加启动脚本。复制 http://technet.microsoft.com/en-us/library/cc770556.aspx 的步骤,这样如果他们把它取下来,它仍然可以在 SO 找到。
分配计算机启动脚本
-
打开本地组策略编辑器。
在控制台树中,单击脚本(启动/关闭)。路径是计算机配置\Windows 设置\脚本(启动/关机)。
在结果窗格中,双击启动。
在启动属性对话框中,点击添加。
在 添加脚本 对话框中,执行以下操作:
在脚本名称框中,输入脚本的路径,或单击浏览在域控制器的Netlogon共享文件夹中搜索脚本文件。
在 脚本参数 框中,键入所需的任何参数,方法与在命令行中键入参数的方式相同。例如,如果您的脚本包含名为 //logo(显示横幅)和 //I(交互模式)的参数,请键入 //logo //I。
在 启动属性 对话框中,指定所需的选项:
【讨论】:
这仅适用于:Windows 7、Windows 8、Windows Server 2008 R2、Windows Server 2012 是的,这是 2013 年......我会说它的年龄相当不错:)以上是关于在 Windows Server 启动时自动运行程序的主要内容,如果未能解决你的问题,请参考以下文章
如何去除 windows server 2012 r2 自动锁定
Windows Server 2008 R2 可能会碰到任务计划无法自动运行的解决办法