2

首先,只是想提前感谢大家对此的帮助,让我带你去我的旅程......

任务:使用 Windows 任务计划程序运行位于文件服务器上的文件夹中的 Java 应用程序,非常简单。

需要注意的是,我想使用“无论用户是否登录都运行”的任务计划程序选项。这似乎是一个棘手的功能......

我已将我的帐户设置为运行任务的帐户。

我尝试了什么?

基于这些操作创建任务:

Java.exe -jar“共享jar的路径”

Java.exe -jar“本地jar的路径”

Javaw.exe -jar“共享jar的路径”

Javaw.exe -jar “本地 jar 的路径”

“无论用户是否登录,都运行”的结果都相同。选项:0x1

接下来,我尝试创建一个批处理文件来代表我运行它,并将任务更改为运行该批处理文件,我得到了所有相同的结果。我已经读过使用动作的“开始(可选)”字段可能会解决问题,但它没有。

之后,我创建了一个 .vbs 文件,其代码类似于以下内容:

设置 WshShell = CreateObject("WScript.Shell")

WshShell.Run chr(34) & "C:\Batch Files\syncfiles.bat" & Chr(34), 0

设置 WshShell = 无

这实现了“静默运行”,但任务调度程序仍然没有运行“无论使用是否登录都运行。”,并以 0x1 结束。

所有这些都适用于“仅在用户登录时运行”。选项。

无论我是否登录,我都想这样做的原因是因为我想在上班之前运行我的应用程序。

更新: 我发现了一些东西。在 Windows 的电源选项中,我必须启用计划任务唤醒计算机的功能,对此我感到有点愚蠢。

使用一个更简单的任务 - 一个只创建一个空白文本文件的任务 - 这个选项可以正常工作。我相信问题在于执行 Java。

4

1 回答 1

1

该任务需要用户运行。当然,它不必是登录的用户,但无论如何都需要用户。

  1. 制作一个在您手动启动时有效的批处理文件(或等效文件)
  2. 使用您的密码和所有内容安排相同的批处理文件(带有cmd /c c:\full\path\to\batch.bat)以您自己的身份运行。
  3. 现在您已准备好调试您的问题

当没有人登录时,Windows 用户将用来运行您的任务,需要配置和工作的所有工具。例如,本地服务是否设置了所有路径和注册表设置?该用户是否可以读取共享(系统帐户没有网络凭据)。

为了帮助调试,请使用psexec。此命令行将允许您在 SYSTEM 帐户下运行脚本。就像是

psexec -dies cmd /c c:\full\path\to\batch.bat

+欢迎来到 SO !

于 2013-04-12T18:57:45.470 回答