从任务计划程序以最小化方式启动服务

从任务计划程序以最小化方式启动服务

按照以下步骤创建计划任务后这个超级用户问题,我可以成功启动服务而无需 UAC 提示。所选的选项为:

  • Start a program
  • Program\script=C:\Windows\System32\net.exe
  • Add arguments (optional)=start "SERVICE-NAME"

然后在批处理文件中调用schtasks /run /tn TASK-NAME。经过测试后,我创建了该批处理文件的快捷方式并将选项设置RunMinimised

一切正常,只是在启动实际服务时,会弹出一个最大化的命令提示符窗口,其中只有一行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命令,我们用它来实现两个功能:

  1. 最小化启动net.exe
  2. 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

相关内容