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

Windows 7 如何在批处理文件中启动具有管理员权限的程序,windows-7,batch-file,Windows 7,Batch File,如何使用管理权限从另一个批处理文件启动/调用批处理文件,使其不会出现如下错误 访问被拒绝,错误代码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% 右键单击->以管理员身份运行 我认为微软尽了最大努力阻止批处理脚本

如何使用管理权限从另一个批处理文件启动/调用批处理文件,使其不会出现如下错误

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

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


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

有时第三方实用程序(如(请参见函数)不是一个选项,但如果您确实有此选项,请查看它,因为它将让您完全实现您的目标。然后可以从脚本中调用AutoIt脚本并使用其runas函数

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

runas /user:computername\username /savecred yourcommand.exe
另一种方法是创建可由脚本调用的计划任务。您可以使用或从提升的命令行进行设置

然后可以从脚本中调用它,如下所示:

SCHTASKS /Run /TN yourtaskname

@cmd,我发布了一个示例()来运行另一个
bat文件
,该文件具有
ShellExecute
提升的
权限(仅在需要时)

看看它是否是你想要的和你需要的。如果没有,让我知道,我们可以调整您的脚本,使其工作


祝你好运

只需将bat文件放入Windows目录,它将以管理员身份运行。我自己也试过了,效果很好:

C:\Windows\batch_file.bat

它应该是这样工作的。

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

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

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

无论您选择哪种方式,您都必须接受以管理员权限运行它,所以关键是哪种方式更短?您可以
右键单击>以管理员身份运行
正如jean Michael所说,尽管我更喜欢james方法(使用vbScript),但如果您不想使用另一个vbScript文件,只想获得只需单击批处理文件并以管理员权限接受运行的好处(请注意,您有一次右键单击和一次左键单击)我建议您:

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


希望有此帮助。

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

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

使用
runas
命令。@一匹没有名字的马,你能详细说明一下吗,我做了
runas/?
,语法没有显示如何在没有提示的情况下提供密码。可能与Google重复的还有更多:@endro我没有剽窃谢谢。@jean-Michael\u Celerier谢谢你,但我想在t内做到这一点他自己批处理。@cmd你看到它可能存在的安全缺陷了吗?任何人都可以创建一个随机批处理脚本并格式化c:…这不是真的,因为他们仍然需要提供密码。当你手动以管理员身份运行时,或者将其固定到任务栏上,然后编辑它以始终以管理员身份运行(如my cmd.exe)然后,您不需要管理员通行证,您只需单击“是”按钮,或者在更改设置后只需单击图标即可。@jean-Michael Celerier