13

如何从另一个启动/调用批处理文件,但具有管理权限,以便它不会给我如下错误?

访问被拒绝错误代码 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%
4

7 回答 7

4

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

从您的批处理文件创建一个快捷方式,然后右键单击快捷方式 > 属性 > 快捷方式选项卡 > 高级现在选中以管理员身份运行复选框。每次从快捷方式执行它时,您只需单击一下以接受以管理员权限运行它。

希望这有帮助。

于 2015-01-17T10:28:16.040 回答
3

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

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

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

另一种方法是创建一个可以由您的脚本调用的计划任务。您可以使用GUI或从此处描述的提升的命令行来创建它。

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

SCHTASKS /Run /TN yourtaskname
于 2013-08-04T18:23:35.950 回答
2

只需将 bat 文件放入 Windows 目录,它就会以管理员身份运行。我自己试过这个,它奏效了:

C:\Windows\batch_file.bat

它应该像那样工作。

于 2014-04-27T17:52:36.883 回答
1

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

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

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

于 2014-11-13T13:28:09.057 回答
1

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

我认为微软尽可能地阻止批处理脚本自己获得管理权限。

于 2013-08-04T16:34:54.680 回答
1

@cmd,我发布了一个示例如何从批处理脚本测试用户的有效权限?bat file以使用ShellExecute和 权限运行另一个示例elevated(仅在需要时)。

看看它是否是您正在寻找的和您需要的。如果没有,请告诉我,我们可以调整您的脚本以使其正常工作。

祝你好运

于 2013-08-05T07:36:01.527 回答
0

我实际上只是为了回答这个问题,到目前为止,最简单的方法是创建要运行的程序的快捷方式,然后将快捷方式设置为以管理员身份运行,然后从批处理文件中调用快捷方式。这将使用快捷方式中指定的设置运行,您可以将此快捷方式放在与批处理文件相同的文件夹中,或者只是从开始菜单中调用它。

示例:“C:\ProgramData\Microsoft\Windows\开始菜单\程序\文件夹\快捷方式名称.lnk”

于 2020-05-19T18:27:10.673 回答