ama*_*ent 6 java scheduled-tasks windows-task-scheduler
在最新版本的 Windows 中通过任务计划程序启动任务时,如果任务是“无论用户是否登录都运行”,则该任务将不会交互运行 - 即它不会启动 UI。
作为参考,这是根据Microsoft 的说法,并在此SuperUser 问题和此StackOverflow 问题中突出显示:
您可以指定任务应该运行,即使计划运行任务的帐户在触发任务时未登录也是如此。为此,请选择标有“无论用户是否登录都运行”的单选按钮。如果选择此单选按钮,任务将不会交互运行。要使任务以交互方式运行,请选择“仅在用户登录时运行”单选按钮。
然而,我的问题是由此衍生的。
TaskScheduler 启动的任务是一个 Java 客户端应用程序,可以指示它运行进程 - 这些进程通过客户端应用程序中的 ProcessBuilder 运行。因此,该客户端应用程序被隐藏/不启动 UI 是可以的 - 事实上,没有 UI。
但是,如果如上所述通过 TaskScheduler 启动客户端应用程序以“无论用户是否登录都运行”,则客户端应用程序中由 ProcessBuilder 启动的任何进程也无法交互运行/无法显示 UI。这是一个问题,因为客户端启动的一些进程是 UI 应用程序。
我不确定为什么会出现这种情况,但实际上我正在尝试找出是否有解决方法 - 例如可以添加一些环境变量或属性来获得由(不可见)客户端启动的可见进程。
有什么想法吗?
我发现的解决方法是停止使用任务计划程序,创建一个脚本来启动我的应用程序,并在“开始”菜单 > 程序 > 启动文件夹中添加该脚本的快捷方式。
\n归功于HowToGeek上的这篇文章上的这篇文章:
\n\n\n在 Windows 7 和早期版本的 Windows 上,“开始”菜单包含 \xe2\x80\x9cStartup\xe2\x80\x9d 文件夹,以简化此操作。
\n在 Windows 8、8.1 和 10 上不再能够轻松访问此文件夹,但仍可以访问 it\xe2\x80\x99s。要访问它,请按 Windows 键 + R,在“运行”对话框中键入 \xe2\x80\x9cshell:startup\xe2\x80\x9d,然后按 Enter。
\n您添加到 \xe2\x80\x9cshell:startup\xe2\x80\x9d 文件夹的快捷方式仅在您使用用户帐户登录时才会启动。如果您\xe2\x80\x99d 喜欢在任何用户登录时启动自身的快捷方式,请在“运行”对话框中键入\xe2\x80\x9cshell:commonstartup\xe2\x80\x9d。
\n
由于我希望应用程序在系统启动时启动,而不是用户登录,因此我使用了 \xe2\x80\x9cshell:commonstartup\xe2\x80\x9d 链接。
\n以这种方式启动的应用程序 - 或者在我的例子中,由以这种方式启动的应用程序启动的应用程序 - 通过其 UI 可见和/或交互。
\n 归档时间: |
|
查看次数: |
5319 次 |
最近记录: |