任务计划程序:在启动时登录会话并启动桌面应用程序?

The*_*ner 5 scheduled-task windows-server-2008-r2

问题:

我有一个运行 3rd 方 ERP 系统的 Windows 2008 R2 VM。他们有一个实用程序,该实用程序将运行计划作业,以每晚 7 天轮换备份 Oracle 数据库及其应用程序数据。

问题是它必须在会话中以交互方式作为桌面应用程序运行。它不能作为服务运行。虽然我对让帐户保持登录状态并不感到兴奋,但我已经学会了允许它。这里的主要问题是,如果服务器重新启动,我可能需要几天时间才能意识到该帐户在应用程序打开的情况下不再登录到服务器。

题:

我可以(如果可以,如何)创建一个在启动时运行的任务,该任务将用户登录到 VM(创建会话)并在该会话的桌面上启动应用程序?

或者

如果这太困难或不可能,任何人都知道如何检查并查看此应用程序是否在该帐户的会话中运行,如果没有发送警报?我什至对自定义事件日志错误也很满意,因为我可以通过远程监控来获取它。

Eva*_*son 8

我假设该程序需要显示其 UI,并且您不能仅以非交互方式运行它。(我喜欢这些软件的“宝石”......)

这是我个人的做法:

  • 将服务器计算机配置AutoAdminLogon为要运行应用程序的用户。这将导致服务器的控制台在启动时自动以该用户身份登录。

  • 向自动登录用户的个人“启动”组添加一个脚本,该组异步启动任务,监视当前任务的进程列表(我WMIC PROCESS LIST个人使用),如果任务从进程列表中丢失,则发出警报,如果是这样- 需要,重新启动该过程。我也会锁定工作站。

Startup 组中的脚本可以很简单(调用您必须运行的程序eqalert.exe):

@echo off
:restart
start "" "C:\Program Files\EQFU\EQWin32\eqalert.exe"
:check_loop
rem Delay 30 seconds between checks
ping -n 30 127.0.0.1 >NUL 2>NUL
wmic process list | find /i "eqalert.exe" >NUL 2>NUL
if not errorlevel 1 goto check_loop
echo eqalert.exe not running - restarting
eventcreate /T ERROR /ID 1 /L APPLICATION /D "eqalert.exe not running - restarting"
goto restart
Run Code Online (Sandbox Code Playgroud)

该脚本假定只有一个任务实例正在运行,并且只检查该任务是否存在于进程列表中。如果进程挂起并以其他方式终止,则此脚本将无法捕获。(监视程序是否“响应”Windows——即它的消息泵是否仍然——呃——泵送——是一个更复杂的前景。)

  • 我只能通过你的措辞来判断。我对蹩脚的软件和交互式登录会话的愚蠢要求有着强烈的直觉。(而且我必须在几个站点上处理这条狗。甚至不要让我开始谈论我们 3 周前刚刚升级到 2012 版本的事情——我可怜的客户正在运行供应商提供的一次性 SQL 脚本在升级完成后的_天_,只是为了恢复基本功能。) (5认同)
  • 我觉得奇怪的是你知道我指的是哪个 3rd 方应用程序。;) (2认同)