【问题标题】:Automatically run program on Windows Server startup在 Windows Server 启动时自动运行程序
【发布时间】:2011-08-24 14:27:38
【问题描述】:

我正在尝试在始终打开的 Windows 服务器上创建和安装 .NET 应用程序,但我遇到了问题。我听说我不应该让它成为 Windows 服务(并且个人更愿意有一个对话应用程序,以便我可以看到进度等),所以我正在尝试使用任务调度程序。但是,任务调度程序一直试图过早关闭我的应用程序,而它应该只打开它并保持打开状态。

有什么想法可以让我的对话应用程序在我的服务器上启动时运行(并保持运行)?

【问题讨论】:

  • 好的,我已经通过创建一个打开我的主程序的程序并让任务调度程序打开第一个程序来让它工作。不知何故,我认为这不是最好的方法,还有其他建议(除了提供服务)吗?

标签: .net windows scheduled-tasks windows-server


【解决方案1】:

您可以使用计划任务来执行此操作,该任务不会在用户登录/注销时出现问题。

  1. 打开任务计划程序,Windows 键 + R

Taskschd.msc

  1. 点击操作菜单 > 创建任务

  1. 将用户更改为管理员或者最好是服务帐户,并记下无论用户是否登录都运行选项:

  1. 设置登录时:

  1. 设置要启动的程序:

【讨论】:

  • 这仅适用于用户登录。因此,如果服务器由于某种原因重新启动,此任务将在您登录之前永远不会运行。
  • @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 找到。

    分配计算机启动脚本

    1. 打开本地组策略编辑器。
    2. 在控制台树中,单击脚本(启动/关闭)。路径是计算机配置\Windows 设置\脚本(启动/关机)。
    3. 在结果窗格中,双击启动。
    4. 在启动属性对话框中,点击添加。
    5. 在 添加脚本 对话框中,执行以下操作:
      • 在脚本名称框中,输入脚本的路径,或单击浏览在域控制器的Netlogon共享文件夹中搜索脚本文件。
      • 在 脚本参数 框中,键入所需的任何参数,方法与在命令行中键入参数的方式相同。例如,如果您的脚本包含名为 //logo(显示横幅)和 //I(交互模式)的参数,请键入 //logo //I。
    6. 在 启动属性 对话框中,指定所需的选项:
      • 的启动脚本:列出当前分配给所选组策略对象 (GPO) 的所有脚本。如果您分配多个脚本,则会按照您指定的顺序处理这些脚本。要在列表中上移脚本,请单击它,然后单击上移。要在列表中向下移动脚本,请单击它,然后单击向下。
      • 添加:打开添加脚本对话框,您可以在其中指定要使用的任何其他脚本。
      • 编辑:打开编辑脚本对话框,您可以在其中修改脚本信息,例如名称和参数。
      • 删除:从启动脚本列表中删除选定的脚本。
      • 显示文件:显示存储在选定 GPO 中的脚本文件。

    【讨论】:

    • 这仅适用于:Windows 7、Windows 8、Windows Server 2008 R2、Windows Server 2012
    • 是的,这是 2013 年......我会说它的年龄相当不错:)
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2012-03-18
    • 2015-09-16
    • 1970-01-01
    • 1970-01-01
    • 2011-08-22
    • 2017-04-09
    • 1970-01-01
    相关资源
    最近更新 更多