![允许非管理员用户通过快捷方式触发任务计划程序任务](https://linux22.com/image/1665915/%E5%85%81%E8%AE%B8%E9%9D%9E%E7%AE%A1%E7%90%86%E5%91%98%E7%94%A8%E6%88%B7%E9%80%9A%E8%BF%87%E5%BF%AB%E6%8D%B7%E6%96%B9%E5%BC%8F%E8%A7%A6%E5%8F%91%E4%BB%BB%E5%8A%A1%E8%AE%A1%E5%88%92%E7%A8%8B%E5%BA%8F%E4%BB%BB%E5%8A%A1.png)
我有一款软件只能在当前用户下获得许可,我需要在实验室机器上使用它,但我不知道谁会登录。我有一个在用户登录时在任务计划程序中运行的脚本,每次都可以许可该软件,但我不想在每次用户登录时都启动它(该脚本需要弹出窗口,因此它会很显眼,用户体验不是很好,特别是对于那些甚至不打算使用该软件的人)。我需要任务计划程序,因为它允许我使用 运行 PowerShell 脚本-ExecutionPolicy Bypass
,而无需提示用户输入管理员凭据。
我想要的是可以手动触发任务的快捷方式,这样用户可以决定是否要许可该软件。不幸的是,它一直没有起作用。
我创建了一个快捷方式,其中 target:C:\Windows\System32\schtasks.exe /run /tn DBCLicenser
是DBCLicenser
我的任务名称。当我尝试运行快捷方式时,什么也没有发生。在命令提示符中运行它,我看到错误:ERROR: Access is denied
在提升的命令提示符中运行快捷方式成功,但我们的用户不是管理员,因此这不是一个选项。
这里要明确一点的是,成功运行当任务触发器设置为用户登录时。我已确保在任务设置中选中“以最高权限运行”和“允许任务按需运行”。
似乎用户没有权限触发任务。我尝试手动添加权限C:\Windows\System32\Tasks\%%mytask%%
,但似乎此修复在 Windows 10 中不再起作用。
答案1
我找到一个脚本这里,在评论部分,这为我解决了这个问题。我所要做的就是插入我的任务名称(例如[...].GetTask("myTask")
),运行一次,然后一切都按我想要的方式进行。
$scheduler = New-Object -ComObject "Schedule.Service"
$scheduler.Connect()
$task = $scheduler.GetFolder("").GetTask("")
$sec = $task.GetSecurityDescriptor(0xF)
$sec = $sec + '(A;;GRGX;;;AU)'
$task.SetSecurityDescriptor($sec, 0)
谢谢 Grubi。