我有一款软件只能在当前用户下获得许可,我需要在实验室机器上使用它,但我不知道谁会登录。我有一个在用户登录时在任务计划程序中运行的脚本,每次都可以许可该软件,但我不想在每次用户登录时都启动它(该脚本需要弹出窗口,因此它会很显眼,用户体验不是很好,特别是对于那些甚至不打算使用该软件的人)。我需要任务计划程序,因为它允许我使用 运行 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。