问题:
我有一台运行第三方ERP系统的Windows 2008 R2 VM.他们有一个实用程序,它将运行预定作业,每晚备份Oracle数据库及其应用程序数据,并进行7天轮换.
问题是它必须在会话中以交互方式作为桌面应用程序运行.它无法作为服务运行.虽然我对于登录帐户并不感到兴奋,但我已经学会了允许它.这里的主要问题是,如果服务器重新启动,我可能需要几天才意识到该应用程序打开时该帐户不再登录到服务器.
题:
可以(如果是这样,如何)我创建一个在启动时运行的任务,将用户登录到VM(创建会话)并在该会话的桌面上启动应用程序?
要么
如果这太难或不可能,任何人都有关于如何检查并查看该应用程序是否在该帐户的会话中运行以及是否发送警报的想法?即使是自定义事件日志错误,我也很酷,因为我可以通过远程监控来选择它.
我假设程序需要显示其UI,并且您不能以非交互方式运行它. (我喜欢这些软件的“宝石”…)
以下是我个人所做的事情:
>使用AutoAdminLogon
作为要运行应用程序的用户配置服务器计算机.这将导致服务器的控制台在启动时自动登录此用户.
>将脚本添加到自动登录用户的个人“启动”组中,该组以异步方式启动任务,监视正在进行的任务的进程列表(我个人使用WMIC PROCESS LIST),如果进程列表中的任务丢失则发出警报并且,如果需要,重新启动该过程.我也会锁定工作站.
启动组中的脚本可以很简单(调用您必须运行的程序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
此脚本假定只有一个任务实例在运行,并且只检查任务在进程列表中的存在.如果进程挂起并以其他方式终止,则此脚本将无法捕获. (监控程序是否“响应”Windows–即如果它的消息泵仍然是 – 呃 – 抽水 – 是一个更复杂的前景.)