无论用户是不是登录,任务计划程序在设置为运行时都无法打开批处理文件

Posted

技术标签:

【中文标题】无论用户是不是登录,任务计划程序在设置为运行时都无法打开批处理文件【英文标题】:Task scheduler cannot open batch file when set to run whether user is logged on or not无论用户是否登录,任务计划程序在设置为运行时都无法打开批处理文件 【发布时间】:2014-11-03 07:51:57 【问题描述】:

操作系统:Windows Server 2008 R2 企业版

我在注销时无法让任务计划程序运行 .bat 文件。我有一个要使用的生产 .bat 文件,但出于故障排除目的,我使用的是 C:\Users\Administrator\Desktop\test.bat

test.bat 非常简单。它包含的只是: taskkill /im notepad.exe

它自行成功运行。如果我打开记事本并双击 test.bat,则 cmd 窗口会闪烁并且记事本消失。 .bat 文件不是问题。

我在任务计划程序中创建的任务是“Test taskkill”(不带引号)。我可以在 Windows 资源管理器中看到它的位置:C:\Windows\System32\Tasks\Test taskkill

如果任务设置为仅在用户登录时运行,则任务有效。使用此设置,我可以右键单击它 > 运行,并获得与双击 .bat 文件相同的行为。这意味着任务配置正确。

如果我将它设置为无论用户是否登录都运行,那么当我右键单击 > 运行时,不会发生任何明显的事情。该作业在历史记录中报告为已成功运行,但记事本仍然存在。我知道我正在为我正在配置的帐户使用正确的凭据来运行任务。该帐户是本地管理员。

此问题与过去的其他问题相似:

Running a .bat file in Scheduled Task

http://social.technet.microsoft.com/Forums/windowsserver/en-US/d47d116e-10b9-44f0-9a30-7406c86c2fbe/scheduled-task-wont-run-bat-file?forum=winservermanager

第二个链接中的线程似乎解决了许多人的相同问题,建议用于运行任务的帐户需要对 .bat 文件和 .bat 文件修改的所有文件的明确许可。这是非常有希望的(如果一个烦人的要求)。但是,我已经确认或为本地管理员分配了以下区域的明确权限,但我仍然没有成功:

C:\Users\Administrator\Desktop\ C:\Users\Administrator\Desktop\test.bat C:\Windows\System32\Tasks\ C:\Windows\System32\Tasks\Test taskkill

另外,我已经确认本地管理员帐户在本地管理员组中。

我是否缺少其他需要设置的权限?还有什么我应该看的吗?谢谢!

【问题讨论】:

您是否选中了“以最高权限运行”复选框? 对不起,是的。我应该指定的,但我确实这样做了。 我可能已经解决了这个问题。我会尽快通知您(可能明天)。 我在 Windows 10 中遇到了完全相同的问题 【参考方案1】:

在为我的机构做其他工作的承包商的帮助下,我已经解决了这个问题。

在任务的属性窗口中,在“操作”选项卡上,当创建或编辑打开批处理文件(在我的情况下为 test.bat)的操作时,有“程序/脚本:”字段,还有“开始于(可选):”字段。我之前的“程序/脚本:”字段包含文件的完整路径,以文件名结尾,并且“开始于(可选):”字段为空。当在任务属性窗口的常规选项卡中将任务设置为“仅在用户登录时运行”时,此配置似乎可以正常工作。但是,当任务设置为“无论用户是否登录都运行”时,此配置不起作用。

为了解决问题,我更改了操作,使“程序/脚本:”字段仅包含文件名,而不包含文件路径。我将文件路径放在“开始于(可选):”字段中。当任务设置为“仅在用户登录时运行”时,此配置有效!我已经测试了在触发器上运行的任务以及手动运行它。

【讨论】:

对我不起作用,只有当我更改单选按钮的选择时。也许您可以上传一些屏幕截图,您是如何填写这些字段的。【参考方案2】:

不确定这是否有帮助。我的问题还在于使用交互式程序(尤其是 Excel)。

创建 2 个空文件夹(桌面)解决了这个问题。即使您在 x64 上运行,也要创建两者。

C:\Windows\System32\config\systemprofile\Desktop
C:\Windows\SysWOW64\config\systemprofile\Desktop

我调试了我的代码,发现代码在这一行退出了

ExcelFile excelFile = new ExcelFile(directory, filename);

我在某处读过此解决方案,但现在找不到 URL。

【讨论】:

在 bat 文件中使用 excel 宏时,这个对我有用。【参考方案3】:

对我来说,确保路径可用。

我使用 net use Z:\computername\folder /persistent:yes

然后xxcopy /s /c /d /e /i /y D:*.* z:\BackupBat

我注意到我的所有其他 .bat 工作正常,只有引用地图文件夹的那个没有运行,所以这应该是问题所在。通过这些更改,bat 文件运行良好。

【讨论】:

【参考方案4】:

也试试这个..

通过设置“作为批处理作业登录”安全策略解决了“无论用户是否登录都运行”的问题。

这里是设置的详细信息…https://danblee.com/log-on-as-batch-job-rights-for-task-scheduler/

您可以采取另一种方法,但步骤如下…… 1) 我通过将我的管理员帐户(我用来触发任务的)添加到“作为批处理作业登录”安全策略来更新默认域组策略。 (即使列出了 ADMIN 组,并且我使用的是管理员帐户) 2) 我在客户端强制执行 GPUPDATE 3)重启客户端 4)查看客户端的政策,以确保它是从 DC 完成的 5)设置任务“无论用户是否登录都运行” 6)按需运行任务,它可以创建一个PDF文件。 7) 在预定的时间退出并运行任务,它可以创建一个 PDF 文件。

【讨论】:

【参考方案5】:

我有类似的问题,但它与我的可执行批处理文件的路径中有一个空格有关。我已经删除了空间,现在它可以正常工作了。

【讨论】:

所以你的问题是你有错字?这对其他人可能不是很有用。 不,这不是错字!空格确实在路径中,因为批处理文件的路径有空格。我所做的是更改了批处理删除空间的路径;即它在“D:\My Jobs\executethis.bat”到“D:\MyJobs\executethis.bat”我需要创建一个没有空格的新目录。【参考方案6】:

验证以下内容对我有用:

1) 任务计划程序中的“如果用户未登录则运行”选项不适用于交互模式的程序。例如记事本、时钟。任务不会以交互方式运行。确保您的程序不需要任何交互操作。

2)如果您的程序路径不是系统路径之一,请检查“开始(可选)”。您最好在其中添加程序路径。在“程序/脚本”中只输入程序的名称,并在“开始”中输入脚本的路径。

3)您为您的程序设置的用户帐户不仅必须有权运行您的程序本身,还必须有权运行与您的程序相关的所有其他程序。

这是一个示例程序:

在 C:\myprogram\folderOne\test.cmd

date /t >> c:\Temp\testAuto.log
date /t >> c:\temp\testAuto.log
echo ----->> c:\temp\testAuto.log
cls
exit

-创建任务,选择常规>安全选项“无论用户是否登录都运行” -在操作>程序/脚本上输入:test.cmd 在“开始于”C:\myprogram\folderOne -运行,您可能会看到 cmd 窗口打开和关闭非常快。 testAuto.log 文件应该在 c:\tmp 文件夹中。

【讨论】:

【参考方案7】:

可能是因为您没有权限。我面临同样的问题,我找到了这样的解决方案 - 打开任务计划程序右键单击您的任务,然后选择属性选项。 在属性中单击常规选项卡,然后单击“用户组或用户”并选择适当的用户。

【讨论】:

以上是关于无论用户是不是登录,任务计划程序在设置为运行时都无法打开批处理文件的主要内容,如果未能解决你的问题,请参考以下文章

任务计划程序问题 - 无论用户是不是登录都运行不工作

任务计划程序在注销和登录后无法显示应用程序的 GUI(无论用户是不是登录都运行)

当设置为“是不是登录时运行”时,Windows 任务计划程序不运行 VBScript

如何使用任务计划程序运行 Cisco AnyConnect

任务计划程序不支持“以最高权限运行”和“运行天气用户是不是登录”选项

在 Windows Server 2008 R2 中安排任务