Windows 启动 - 如何以管理员身份从批处理文件 运行 程序

Windows startup - how to run a program as administrator from a batch file

在 Windows 8.1 上,我正在尝试从启动期间调用的批处理文件启动程序,我希望程序以管理员身份 运行。 这是我的工作:

  1. 我在c:\program下有一个程序prog.exefiles\MyProgram
  2. EXE 被标记为 "Run as Administrator"
  3. 在 c:\program files\MyProgram 下有一个名为 RunEXE.bat 的批处理文件。它包含各种各样的东西,最后包含一行 "start prog.exe"
  4. 在"C:\programdata\Microsoft\Windows\Start Menu\Programs\StartUp"下有一个RunEXE.BAT的快捷方式。
  5. 当我重新启动 PC 时,我希望快捷方式启动 RunEXE.BAT,而后者又会 运行 PROG.EXE。

但这并没有发生。有一个简短的 "bleep" 声音,好像 Windows 正在显示一条消息,要求确认程序应该 运行 作为管理员,但屏幕上没有任何可见内容。

a) 如果我将快捷方式和 exe NOT 标记为 运行 为管理员,则 EXE 将启动。
b) 如果我将快捷方式和 exe 标记为 运行 为管理员,则 EXE 启动。
c) 如果我将 NOT 到 运行 的快捷方式标记为管理员,并将 EXE 到 运行 的快捷方式标记为管理员,那么EXE 已启动,但它未以管理员身份运行
d) EXE 的启动快捷方式。 (无批次)。快捷方式 not 作为管理员标记为 运行,EXE is 标记:EXE not 运行ning.
e) EXE 的启动快捷方式。 (无批次)。快捷方式 not 被标记为 运行 作为管理员,EXE not 被标记:EXE 是 运行ning 但不是管理员。

我尝试完全禁用 UAC - 结果相同。 我也尝试用另一个 EXE 代替批处理,结果相同。

那么 - 有没有一种方法可以从启动时获得一个 EXE 的快捷方式,这样 运行 一个 EXE 作为管理员?

提升批处理脚本很容易,只要你的电脑上有powershell:

net file 1>nul 2>nul && goto :run || powershell -ex unrestricted -Command "Start-Process -Verb RunAs -FilePath '%comspec%' -ArgumentList '/c %~fnx0 %*'"

您可以在任务计划程序的帮助下完成。

打开 运行 对话框 Win + R 和 运行 以下命令:

%SystemRoot%\system32\taskschd.msc

命中Create Task...

  1. 设置名称(我设置的是FooBar)
  2. 勾选Run with highest privileges
  3. 切换到 Actions 选项卡,New....,浏览到您的 prog.exe
  4. 保存任务

转到您的 .bat 文件,然后在您想要 运行 您的 prog.exe 的地方添加

schtasks /run /tn "FooBar"

Bat 文件不需要 运行 作为管理员(如果不需要的话),prog.exe 将在没有任何提示的情况下启动。