我正在使用 XML 创建通过 PowerShell 配置的计划任务:
$LogonTask_xml = @"
<?xml version="1.0" encoding="UTF-16"?>
<Task version="1.3" xmlns="http://schemas.microsoft.com/windows/2004/02/mit/task">
<RegistrationInfo>
<Date>$(get-date -Format yyyy-MM-ddTHH:mm:ss.00000)</Date>
<Author>Interactive</Author>
<Description>$LogonDescription</Description>
</RegistrationInfo>
<Triggers>
<LogonTrigger>
<Enabled>true</Enabled>
<Delay>PT1H</Delay>
<ExecutionTimeLimit>PT4H</ExecutionTimeLimit>
</LogonTrigger>
</Triggers>
<Principals>
<Principal id="Author">
<GroupId>S-1-5-32-545</GroupId>
<RunLevel>LeastPrivilege</RunLevel>
</Principal>
</Principals>
<Settings>
<MultipleInstancesPolicy>StopExisting</MultipleInstancesPolicy>
<DisallowStartIfOnBatteries>false</DisallowStartIfOnBatteries>
<StopIfGoingOnBatteries>true</StopIfGoingOnBatteries>
<AllowHardTerminate>true</AllowHardTerminate>
<StartWhenAvailable>true</StartWhenAvailable>
<RunOnlyIfNetworkAvailable>false</RunOnlyIfNetworkAvailable>
<IdleSettings>
<StopOnIdleEnd>true</StopOnIdleEnd>
<RestartOnIdle>false</RestartOnIdle>
</IdleSettings>
<AllowStartOnDemand>true</AllowStartOnDemand>
<Enabled>true</Enabled>
<Hidden>false</Hidden>
<RunOnlyIfIdle>false</RunOnlyIfIdle>
<DisallowStartOnRemoteAppSession>false</DisallowStartOnRemoteAppSession>
<UseUnifiedSchedulingEngine>false</UseUnifiedSchedulingEngine>
<WakeToRun>false</WakeToRun>
<ExecutionTimeLimit>PT4H</ExecutionTimeLimit>
<Priority>7</Priority>
</Settings>
<Actions Context="Author">
<Exec>
<Command>$VBScriptPath</Command>
</Exec>
</Actions>
</Task>
"@
我希望所有用户都在自己的环境中运行 - 但不能修改 - 当他们测试它时,他们不断遇到“用户帐户没有权限运行此任务”。
如您所见,该任务以Users
组身份运行,并允许按需启动。如果我以管理员身份运行该任务,则该任务运行正常。“用户”组可以看到此特定任务,并且对任务文件(位于 c:\Windows\System32\Tasks)具有读取和执行权限,并且用户可以创建其他任务并运行它们。我敢发誓这曾经有效。
当我创建另一个任务并操作 ACL 以完全匹配“麻烦”的任务时,第二个任务仍然会根据用户的请求运行,没有任何问题。
某些任务肯定有其他原因可以阻止非特权用户运行它们,但我不知道那是什么。救命!
答案1
为了防止将来有人遇到这个问题,这里是答案......
在某些时候,微软停止使用任务文件来C:\Windows\System32\Tasks
控制计划任务的安全性。据称这种情况发生在 Win10 上,但这不可能是 Win10 的早期版本,因为我的问题直到较新的版本才出现。
尽管如此,运行计划任务的能力现在通过注册表设置进行控制HKLM\SOFTWARE\Microsoft\Windows NT\CurrentVersion\Schedule\TaskCache\Tree
,但这些键受到“普通”管理员的保护。我发现在此处添加权限的代码,并将其清理成我将使用它来允许任何用户运行单个任务。
希望这对某人有帮助。