我们要求在特定用户的配置文件上运行可执行文件,以使我们的报告能够为我们使用的某些第三方软件运行。
如果会话“断开”则没问题。
自动启动将不起作用,因为当我们的软件开发人员完成他们的工作时,这个用户帐户一直被“注销” - 我们已经告诉他们停止注销。
我正在考虑使用 PowerShell 脚本来查询 X 用户是否已登录 - 每 15 分钟运行一次 - 如果他们的会话已“注销”,则让他们登录。
有任何想法吗..?
(编辑 1,2023 年 5 月 15 日)我设法使用 NSSM 并让 .BAT 作为服务运行,但是,生成的 CSV 报告是空白的。我怀疑这是因为正在运行的 .exe 需要额外的命令来提取正确的数据。我将看看我是否可以让 NSSM 的参数来处理 BAT 文件的参数 - 下面的脚本。
echo off
set WRKDRV=C:
set WRKDIR="C:\Program Files\Principal Systems\LIVE\In-DEX\5.0\wrk"
%WRKDRV%
cd %WRKDIR%
call "C:\Progress\OpenEdge\bin\prowin.task.scheduler.exe" -basekey "INI" -ininame "..\bin\in-dex.ini" -pf "..\bin\in-dex.pf" -rr -p lib/tasks.w -param "START;1"
exit
exit
答案1
想法:将程序或 PowerShell 脚本作为系统服务运行。这将使其独立于任何活动用户会话。
要使用的工具是 服务启动 它将包装它,以便它可以作为系统服务工作。要创建服务,请使用 Microsoft sc.exe 创建. 可以将该服务设置为在指定的用户帐户下开机自动运行。
您可以在文章中找到有关此操作的旧教程 如何在 Windows 中将任何程序作为后台服务运行尽管自撰写以来一些细节已经发生了变化,但其本质仍然是正确的。
(注意:我不能保证它能够成功运行于您的特定 PowerShell 脚本。)