按照以下步骤创建计划任务后这个超级用户问题,我可以成功启动服务而无需 UAC 提示。所选的选项为:
Start a program
Program\script
=C:\Windows\System32\net.exe
Add arguments (optional)
=start "SERVICE-NAME"
然后在批处理文件中调用schtasks /run /tn TASK-NAME
。经过测试后,我创建了该批处理文件的快捷方式并将选项设置Run
为Minimised
。
一切正常,只是在启动实际服务时,会弹出一个最大化的命令提示符窗口,其中只有一行The SERVICE-NAME service is starting
。几秒钟后,该窗口就会消失。
如何让任务计划程序静默启动(或最小化)目标程序而不弹出窗口?如果最小化弹出命令提示符,那就没问题了。
答案1
问题是,当您将快捷方式配置为最小化运行时,您只会启动启动计划任务的程序,而不是任务执行的程序。您需要 Rube Goldberg 机器启动序列中的另一个部分,请进行以下更改:
Program\script
=C:\Windows\System32\cmd.exe
Add arguments (optional)
=/c start /min net start "SERVICE-NAME"
第一个“start”是cmd.exe
start
命令,我们用它来实现两个功能:
- 最小化启动
net.exe
。 taskeng.exe
在启动后立即完成,而net.exe
不是等待它完成。
请注意,此解决方案并不完美,因为在启动taskeng.exe
之前它会短暂闪烁net.exe
,但通常少于一秒钟。
答案2
您可以启动服务(或任何其他程序),而无需任何窗口闪烁,甚至没有最小化。
创建任务:
- 命令/脚本:
mshta.exe
- 添加参数(可选):
"javascript: new ActiveXObject('shell.application').ShellExecute('net.exe', 'start <SERVICE-NAME>', '', 'open', 0); close();"
由于您要启动服务,因此您需要管理权限,因此请检查以最高权限运行在第一个标签页。
要运行任务而不显示任何窗口,可以使用相同的技巧。使用以下命令创建快捷方式:
mshta.exe "javascript: new ActiveXObject('shell.application').ShellExecute('schtasks.exe', '/run /tn <TASK-NAME>', '', 'open', 0); close();"
笔记
- 运行快捷方式的用户必须是管理员,因为普通用户只能运行他们的任务,而此任务具有最高权限。否则,命令
schtasks
将失败并显示“访问被拒绝”。 - 如果任务在任务文件夹中,则
/tn <TASK-NAME>
来自/tn <FOLDER>\<TASK>
shell,并且您必须双反斜杠mshta
在快捷方式的命令中退出。 - 一些防病毒程序(至少是卡巴斯基)可能会将使用这种方式的任务
mshta
视为可疑或具有潜在风险,从而将其删除。 - 你可以使用这个技巧来运行任何隐藏的程序,而不会弹出任何提示。只需将其替换
net.exe
为程序名称和start <SERVICE-NAME>
包含所需参数的部分即可。
答案3
只有这个对我有用,Windows 11