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

问题描述 投票:10回答:7

我如何从另一个启动/调用一个具有管理特权的批处理文件,这样它不会给我类似以下的错误?

拒绝访问,错误代码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%
windows-7 batch-file
7个回答
3
投票

有时AutoIt之类的第三方实用程序(请参见runas功能)不是一个选项-但是,如果您确实有该选项,请进行检查,因为它可以使您准确地实现目标。然后,您可以从脚本中调用AutoIt脚本并使用其runas函数。

Windows runas不支持提供密码,除非您对/savecred选项感到满意-如果仅从一台计算机运行任务,这很好。第一次它将要求您输入密码,但此后将不会输入密码(尽管每次使用时仍必须使用/savecred选项)。我觉得使用它可能是一个巨大的安全漏洞。但是,由于这似乎是针对您自己的计算机的,因此在批次中使用以下命令:

runas /user:computername\username /savecred yourcommand.exe

另一种方法是执行可以由脚本调用的计划任务。您可以使用GUI或从提升的命令行中将其设为described here

然后您可以像这样从脚本中调用它:

SCHTASKS /Run /TN yourtaskname

3
投票

只需将bat文件放入Windows目录,它将以管理员身份运行。我自己尝试了一下,它起作用了:

C:\Windows\batch_file.bat

它应该这样工作。


2
投票

无论您选择哪种方式,都必须接受以管理员权限运行它,所以关键是哪种方式更短?您可以像[[jean-Michael所说的那样Right Click > Run as administrator,尽管我更喜欢james方法(使用vbScript),但是如果您不想使用另一个vbScript文件,而只想单击批处理文件并接受以管理员权限运行(请注意,您只需单击鼠标右键一次,然后单击鼠标左键少一点),我建议您这样做:

从批处理文件创建快捷方式,然后右键单击

快捷方式>属性>快捷方式选项卡>高级

现在选中以管理员身份运行复选框。每次从快捷方式执行它时,您只需单击一下就可以以管理员权限运行它。希望获得帮助。

1
投票
右键单击->以管理员身份运行。

我认为微软尽了最大的努力来防止批处理脚本自行获得管理特权。


1
投票

@@ cmd,我发布了一个示例[[(How can I test effective permissions of a user from a batch script?)来运行另一个具有bat fileShellExecute权限的elevated(仅在需要时)。

看看它是否是您想要的和您所需要的。如果没有,请告诉我们,我们可以调整您的脚本以使其起作用。祝你好运

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

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


0
投票
示例:“ C:\ ProgramData \ Microsoft \ Windows \开始菜单\ Programs \ Folder \ Shortcut Name.lnk”
© www.soinside.com 2019 - 2024. All rights reserved.