Windows Server 启动时自动运行程序

问题描述 投票:0回答:4

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

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

.net windows scheduled-tasks windows-server
4个回答
30
投票

您可以使用计划任务设置来运行在启动时时间或按计划运行,这样用户登录/注销就不会出现问题。

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

Taskschd.msc

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

  1. 将用户更改为管理员或最好是服务帐户,并注意选项无论用户是否“登录”都运行

4a。设置启动时 - 与用户登录或注销无关

4b。或者设置登录时 - 取决于用户登录

4c。或者设置按计划工作,无论用户是否登录:

  1. 设置要启动的程序:

注意: 请使用服务帐户来执行此操作,如果您使用管理员帐户,则更改密码后将会失败,

注意: 对于无人值守的应用程序,请选择控制台应用程序,因为除非用户登录,否则用户界面应用程序可能会出现问题。并且也不要让窗口保持活动状态,即不要生成 MsgBox - 使用后杀死所有窗口,或者只让一个控制台应用程序在后台运行,否则您可能会因太多未处理的句柄而导致计算机崩溃。

start /B your_console_app.exe

/B

标志告诉开始在后台运行应用程序而不创建新窗口。


12
投票
这是一个非常古老的问题,但对于那些通过谷歌来到这里的人来说:

启动命令提示符并输入

shell:Startup


这将在“开始”菜单/程序/启动的隐藏 AppData 路径中打开一个窗口 -> 添加要启动的程序的可执行文件的快捷方式。

这当然仅适用于您当时使用的登录帐户。

对于所有用户,请输入

shell:Common Startup


    


10
投票
你应该创建一个Windows服务;这是唯一可靠的方法。

否则,您将遇到问题,例如用户注销。

如果你想要 UI,你可以制作一个单独的 GUI 来与服务通信(可能使用 WCF)。


5
投票
我更喜欢在任务计划程序中创建任务并将触发器设置为“启动时”,但您也可以使用启动脚本。

您还可以使用本地组策略编辑器(执行 gpedit)并添加启动脚本。复制

http://technet.microsoft.com/en-us/library/cc770556.aspx 中的步骤,这样即使他们将其删除,仍然可以在 SO 中找到它。

分配计算机启动脚本

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