Windows 启动 - 如何以管理员身份从批处理文件 运行 程序
Windows startup - how to run a program as administrator from a batch file
在 Windows 8.1 上,我正在尝试从启动期间调用的批处理文件启动程序,我希望程序以管理员身份 运行。
这是我的工作:
- 我在c:\program下有一个程序prog.exefiles\MyProgram
- EXE 被标记为 "Run as Administrator"
- 在 c:\program files\MyProgram 下有一个名为 RunEXE.bat 的批处理文件。它包含各种各样的东西,最后包含一行 "start prog.exe"
- 在"C:\programdata\Microsoft\Windows\Start Menu\Programs\StartUp"下有一个RunEXE.BAT的快捷方式。
- 当我重新启动 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...
- 设置名称(我设置的是FooBar)
- 勾选
Run with highest privileges
- 切换到
Actions
选项卡,New....
,浏览到您的 prog.exe
- 保存任务
转到您的 .bat 文件,然后在您想要 运行 您的 prog.exe 的地方添加
schtasks /run /tn "FooBar"
Bat 文件不需要 运行 作为管理员(如果不需要的话),prog.exe 将在没有任何提示的情况下启动。
在 Windows 8.1 上,我正在尝试从启动期间调用的批处理文件启动程序,我希望程序以管理员身份 运行。 这是我的工作:
- 我在c:\program下有一个程序prog.exefiles\MyProgram
- EXE 被标记为 "Run as Administrator"
- 在 c:\program files\MyProgram 下有一个名为 RunEXE.bat 的批处理文件。它包含各种各样的东西,最后包含一行 "start prog.exe"
- 在"C:\programdata\Microsoft\Windows\Start Menu\Programs\StartUp"下有一个RunEXE.BAT的快捷方式。
- 当我重新启动 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...
- 设置名称(我设置的是FooBar)
- 勾选
Run with highest privileges
- 切换到
Actions
选项卡,New....
,浏览到您的 prog.exe - 保存任务
转到您的 .bat 文件,然后在您想要 运行 您的 prog.exe 的地方添加
schtasks /run /tn "FooBar"
Bat 文件不需要 运行 作为管理员(如果不需要的话),prog.exe 将在没有任何提示的情况下启动。