如何从另一个批处理文件启动/调用批处理文件,但是具有管理权限,以便它不会给出如下错误?
拒绝访问错误代码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%
答案 0 :(得分:2)
有时第三方实用程序,例如AutoIt(请参阅runas函数)不是一个选项 - 但是如果你确实有这个选项,请查看它,因为这样可以让你完全按照你的目标行事至。然后,您可以从脚本中调用AutoIt脚本并使用其runas函数。
Windows runas不支持提供密码,除非您对/savecred
选项感到满意 - 如果您只是从一台计算机上运行任务,那么这很好。它第一次会要求您输入密码,但之后它不会(尽管每次使用时仍需要使用/savecred
选项)。我有一种感觉,使用这可能是一个巨大的安全漏洞。但是因为它似乎适用于您自己的机器,所以在您的批处理中使用它:
runas /user:computername\username /savecred yourcommand.exe
另一种方法是创建一个可由脚本调用的计划任务。您可以使用GUI或从提升的命令行described here创建它。
然后您可以从脚本中调用它:
SCHTASKS /Run /TN yourtaskname
答案 1 :(得分:2)
只需将bat文件放入Windows目录,它将以管理员身份运行。我自己尝试了这个,它起作用了:
C:\Windows\batch_file.bat
应该那样工作。
答案 2 :(得分:1)
右键单击 - >以管理员身份运行。
我认为微软尽可能地阻止批处理脚本获得管理权限。
答案 3 :(得分:1)
@cmd ,我发布了一个示例(How can I test effective permissions of a user from a batch script?),以bat file
和{{1}运行另一个ShellExecute
权利(仅在需要时)。
看看它是你在寻找什么以及你需要什么。如果没有,请告诉我们,我们可以调整您的脚本以使其正常工作。
祝你好运答案 4 :(得分:1)
在批处理文件本身内无法以管理员身份运行,但是如果从.VBS文件中启动批处理文件,则可以指定运行'运行。参数。
set shell=CreateObject("Shell.Application")
shell.ShellExecute "your_batch_file.bat",,"C:\path\to\thedirectory", "runas", 0
set shell=nothing
这将以管理员身份启动您的批处理文件,您可以启用或禁用shell显示(此示例将其隐藏,因为我希望我的程序在后台运行而不会被看到)。
答案 5 :(得分:1)
无论您选择哪种方式,您都必须接受以管理员权限运行它,所以关键是哪条路更短?您可以Right Click > Run as administrator
作为 jean-Michael 说虽然我更喜欢 james 方法(使用vbScript),但如果您不想使用其他vbScript文件而只是想要只需点击批处理文件并接受使用管理员权限运行的好处(注意你有一个右键单击并左键单击更少)我建议你这样:
从批处理文件创建快捷方式,然后右键单击快捷方式&gt;属性&gt; <快捷方式标签>高级现在选中“以管理员身份运行”复选框。每次从快捷方式执行它时,只需单击一下即可接受以管理员权限运行它。
希望得到这个帮助。
答案 6 :(得分:0)
我实际上只是为了回答这个问题而加入的,到目前为止,最简单的方法是为要运行的程序创建一个快捷方式,然后将该快捷方式设置为以管理员身份运行,并仅从批处理文件中调用该快捷方式。这将使用快捷方式中指定的设置运行,您可以将此快捷方式放置在与批处理文件相同的文件夹中,也可以从开始菜单中调用它。
示例: “ C:\ ProgramData \ Microsoft \ Windows \开始菜单\ Programs \ Folder \ Shortcut Name.lnk”