手动执行脚本有效,但在任务计划程序中无效

手动执行脚本有效,但在任务计划程序中无效

我在使用 Windows 7 Pro 中的任务计划程序时遇到了麻烦。我想运行一个脚本。手动执行工作正常,任务管理器什么也不做。

脚本的一部分是使用以下 VBScript 将焦点设置到特定窗口上:

Dim ObjShell :Set ObjShell = CreateObject("Wscript.Shell")
ObjShell.AppActivate("Notepad")

上面两行只是更大脚本的一部分,但为了检查错误,我排除了其他所有内容。首先我必须运行它,然后再运行原始脚本。

当然,记事本是打开的,手动执行 vbs 会设置焦点。使用任务计划程序运行脚本不会设置焦点。我甚至在任务计划程序中手动运行了脚本(右键单击 - 运行) - 也没有设置焦点。

该任务以提升的权限运行,并且由与手动启动相同的用户运行。计算机未关闭,也未锁定。

为什么脚本可以手动运行,但不能在任务计划程序中运行?如何让它在任务计划程序中运行?

€dit:如果可能的话,我想运行 vbs 文件而不是 .bat 文件,因为我不想打开 cmd 窗口。

答案1

为了让任务能够访问交互式会话(即运行程序和打开窗口),您需要将其配置为在登录用户下运行。只需转到任务属性并在常规选项卡中选择Run only when user is logged on

任务属性对话框

使用其他选项更安全,但也使其更具限制性。

答案2

AppActivate 无法通过任务运行;很可能是作为一种安全预防措施。

网络上的一般建议(假设你想使用 SendKeys 和类似的东西)是放弃并使用自动识别而不是 VBScript。

PS:我也尝试过PowerShell 与 SetForegroundWindow(从user32.dll导入),其行为与VBS相同。

相关内容