概括
我正在遵循以下示例微软官方文档关于使用任务计划程序创建以 XML 定义的任务。我的目标是实现系统启动时启动记事本的示例。
细节
按照文档的步骤,我创建了一个包含上述链接内容的 XML 文件,并将其放在 中C:\start-notepad.xml
。为了注册该任务,我以管理员身份打开了 PowerShell,然后运行
PS C:\> schtasks /create /XML start-notepad.xml /tn start-notepad
SUCCESS: The scheduled task "start-notepad" has successfully been created.
PS C:\> schtasks /Query /tn start-notepad
Folder: \
TaskName Next Run Time Status
======================================== ====================== ===============
start-notepad N/A Ready
现在,当我重新启动机器(VirtualBox 上的 VM)时,我希望记事本应用程序能够启动,但它却没有启动。要么是文档缺少某些内容,要么是我做错了……
启动记事本.xml
<?xml version="1.0" ?>
<!--
This sample schedules a task to start notepad.exe when
the system is booted.
-->
<Task xmlns="http://schemas.microsoft.com/windows/2004/02/mit/task">
<RegistrationInfo>
<Date>2005-10-11T13:21:17-08:00</Date>
<Author>AuthorName</Author>
<Version>1.0.0</Version>
<Description>Starts Notepad on system boot.</Description>
</RegistrationInfo>
<Triggers>
<BootTrigger>
<StartBoundary>2005-10-11T13:21:17-08:00</StartBoundary>
<EndBoundary>2026-01-01T00:00:00-08:00</EndBoundary>
<Enabled>true</Enabled>
<ExecutionTimeLimit>PT5M</ExecutionTimeLimit>
</BootTrigger>
</Triggers>
<Principals>
<Principal>
<UserId>Administrator</UserId>
<LogonType>InteractiveToken</LogonType>
</Principal>
</Principals>
<Settings>
<Enabled>true</Enabled>
<AllowStartOnDemand>true</AllowStartOnDemand>
<AllowHardTerminate>true</AllowHardTerminate>
</Settings>
<Actions>
<Exec>
<Command>notepad.exe</Command>
</Exec>
</Actions>
</Task>
任务计划程序
该任务已正确添加到任务计划程序中,但当我单击“运行”时什么也没有发生,重新启动时也没有发生......
答案1
我通过改变找到了解决方案2 件事:
1. 使用LogonTrigger
旁边BootTrigger
这里建议了解决方案:https://www.sevenforums.com/tutorials/67503-task-create-run-program-startup-log.html
我替换了:
<Triggers>
<BootTrigger>
<StartBoundary>2005-10-11T13:21:17-08:00</StartBoundary>
<EndBoundary>2026-01-01T00:00:00-08:00</EndBoundary>
<Enabled>true</Enabled>
<ExecutionTimeLimit>PT5M</ExecutionTimeLimit>
</BootTrigger>
</Triggers>
和:
<Triggers>
<BootTrigger>
<Enabled>true</Enabled>
</BootTrigger>
<LogonTrigger>
<Enabled>true</Enabled>
</LogonTrigger>
</Triggers>
2. 使用正确的Principal
我发现,除非我使用当前登录的用户,否则记事本永远不会在启动(或登录)时启动。这个答案我发现建议使用来builtin\users
使记事本启动,无论哪个用户登录。
我替换了:
<Principal>
<UserId>Administrator</UserId>
<LogonType>InteractiveToken</LogonType>
</Principal>
和:
<Principal>
<GroupId>S-1-5-32-545</GroupId>
<RunLevel>LeastPrivilege</RunLevel>
</Principal>
您可以在这里找到有关此内容的更多信息GrouId
:https://support.microsoft.com/en-au/help/243330/well-known-security-identifiers-in-windows-operating-systems
最终的工作 XML 文件:
<?xml version="1.0" ?>
<Task xmlns="http://schemas.microsoft.com/windows/2004/02/mit/task">
<RegistrationInfo>
<Date>2020-07-29T00:00:00-00:00</Date>
<Author>AuthorName</Author>
<Version>1.0.0</Version>
<Description>Starts Notepad on system boot.</Description>
</RegistrationInfo>
<Triggers>
<BootTrigger>
<Enabled>true</Enabled>
</BootTrigger>
<LogonTrigger>
<Enabled>true</Enabled>
</LogonTrigger>
</Triggers>
<Principals>
<Principal>
<GroupId>S-1-5-32-545</GroupId>
<RunLevel>LeastPrivilege</RunLevel>
</Principal>
</Principals>
<Settings>
<Enabled>true</Enabled>
<AllowStartOnDemand>true</AllowStartOnDemand>
<AllowHardTerminate>true</AllowHardTerminate>
</Settings>
<Actions>
<Exec>
<Command>notepad.exe</Command>
</Exec>
</Actions>
</Task>