如何在批处理文件中以管理员权限启动程序

15

如何以管理员权限从另一个批处理文件开始/调用批处理文件,从而不会像以下错误一样给我报错?

访问被拒绝错误代码5

这里是我想要的东西的类似示例。

echo PLEASE TYPE YOUR USERNAME AND PASSWORD IN THE FIELDS BELOW.
echo.
echo.
echo.
echo.
set /p u=Username:
echo.
set /p p=Password:
start next.bat %u% %p%

使用 runas 命令。 - user330315
@a_horse_with_no_name,您能否详细说明一下?我运行了runas /?,但语法没有显示如何在不提示的情况下提供密码。 - cmd
可能是重复的问题:批处理脚本以管理员身份运行 - Endoro
使用Google等工具,您可以了解更多信息:http://www.verboon.info/index.php/2011/03/running-an-application-as-administrator-or-in-compatibility-mode/ http://stackoverflow.com/questions/12913652/batch-file-running-as-administrator - Endoro
@endoro,谢谢你,我不抄袭。 - cmd
7个回答

4
无论你选择哪种方式,你都必须以管理员权限运行它,所以关键是哪种方式更短?你可以像jean-Michael说的那样,右键单击 > 以管理员身份运行,尽管我更喜欢james的方法(使用vbScript),但如果你不想使用另一个vbScript文件,只想获得单击批处理文件并接受以管理员身份运行的好处(注意你少了一次右键单击和左键单击),我建议你这样做:从你的批处理文件创建一个快捷方式,右键单击快捷方式 > 属性 > 快捷方式选项卡 > 高级,现在勾选“以管理员身份运行”复选框。每次你从快捷方式执行它时,你只需要点击一次来接受以管理员权限运行它。
希望这可以帮到你。

3
有时候第三方工具,比如AutoIt(查看runas函数),不是一个选项。但如果你有这个选项,可以尝试使用它,因为它能够让你实现你的目标。然后你可以从你的脚本中调用AutoIt脚本,并使用它的runas函数。
Windows的runas不支持提供密码,除非你使用/savecred选项——如果你只是在单台计算机上运行任务,那么这没问题。第一次会要求输入密码,但之后就不需要了(尽管每次使用时仍需使用/savecred选项)。我有一种感觉,使用这种方法可能存在巨大的安全漏洞。但既然看起来这是针对你自己的机器,那么在你的批处理中可以使用这个方法:
runas /user:computername\username /savecred yourcommand.exe

另一种方法是创建一个可以由脚本调用的定时任务。您可以使用GUI或从提升的命令行中创建它,如此处所述
然后,您可以像这样从您的脚本中调用它:
SCHTASKS /Run /TN yourtaskname

2

在批处理文件本身中,没有办法以管理员身份运行,但是如果您从.VBS文件中启动批处理文件,则可以指定“runas”参数。

set shell=CreateObject("Shell.Application")
shell.ShellExecute "your_batch_file.bat",,"C:\path\to\thedirectory", "runas", 0 
set shell=nothing 

这将以管理员身份启动您的批处理文件,您可以启用或禁用 shell 显示(此示例将其隐藏,因为我希望我的程序在后台运行而不被看到)。

2

将批处理文件放入Windows目录中,它将作为管理员运行。我自己尝试过这个方法,它有效。

C:\Windows\batch_file.bat

它应该像这样工作。


2

我其实是加入这个网站来回答问题的,迄今为止最简单的方法是创建一个指向要运行程序的快捷方式,然后将该快捷方式设置为管理员运行并只需从批处理文件中调用该快捷方式即可。这将使用快捷方式中指定的设置运行,您可以将此快捷方式放在与批处理文件相同的文件夹中或仅从开始菜单中调用它。

例如: "C:\ProgramData\Microsoft\Windows\Start Menu\Programs\Folder\Shortcut Name.lnk"


1

@cmd,我发布了一个示例(如何从批处理脚本中测试用户的有效权限?),用ShellExecuteelevated权限运行另一个bat文件(仅在需要时)。请查看它是否符合您的要求和需求。如果不是,请告诉我,我们可以调整您的脚本使其正常工作。

祝好运


0

右键 -> 以管理员身份运行。

我认为微软已经尽力防止批处理脚本自行获取管理特权。


1
@jean-Michael_Celerier 谢谢,但我想在批处理本身内完成这个操作。 - cmd
1
@cmd 你看到可能存在的安全漏洞了吗?任何人都可以制作一个随机批处理脚本并格式化C盘... - Jean-Michaël Celerier
2
不是完全不需要提供密码,因为他们仍然需要输入密码。当您手动以管理员身份运行或将其固定到任务栏并编辑它以始终以管理员身份运行(如我的cmd.exe)时,您就不需要管理员密码,只需单击“是”按钮或更改设置后简单地单击图标即可。@jean-Michael Celerier - cmd

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接