2013-08-04 178 views
8

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

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

使用'runas'命令。 –

+0

@a_horse_with_no_name请你详细说明一下,我做了'runas /?',并且语法没有显示如何在不提示的情况下提供密码。 – cmd

+0

[批处理脚本以管理员身份运行](http://stackoverflow.com/questions/14639743/batch-script-to-run-as-administrator) – Endoro

回答

1

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

我认为微软已尽其所能地阻止批处理脚本自行获取管理权限。

+1

@ jean-Michael_Celerier谢谢你,但我希望在批处理本身内完成。 – cmd

+0

@cmd你是否看到了安全漏洞?任何人都可以创建一个随机批处理脚本并格式化为c:... –

+1

并不是真的,因为他们仍然需要提供密码。当你以管理员身份手动运行,或将其固定到任务栏,然后将其编辑为始终以admin身份运行(如我的cmd.exe),则不需要管理员密码,只需单击yes按钮或更改设置后只需点击图标。 @ jean-Michael Celerier – cmd

2

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

Windows runas不支持提供密码,除非您对/savecred选项感到满意 - 如果您只从一台计算机运行任务,那么这很好。第一次它会要求你输入密码,但之后它不会(尽管你每次使用它都必须使用/savecred选项)。我有一种感觉,使用这可能是一个巨大的安全漏洞。但是,因为它看来,这是你自己的机器,在批处理使用:

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

另一种方法是使计划任务,可以通过你的脚本中调用。您可以使用GUI或从命令行提升为described here

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

SCHTASKS /Run /TN yourtaskname 
2

简而言之bat文件到Windows目录下,它会以管理员身份运行。我自己试了一下,结果如下:

C:\Windows\batch_file.bat 

它应该这样工作。

+0

这对我来说也是一样,很好的留言。 – Alex

2

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

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

这将启动您的批处理文件作为管理员,您可以启用或禁用外壳显示(本例中隐藏它,因为我想我的程序在后台而不被发现运行)。

1

不管你选择哪种方式,你必须接受以管理员权限运行它,所以问题是哪个方法更短?你可以Right Click > Run as administrator作为吉安迈克尔表示,虽然我更喜欢詹姆斯方法(使用vbScript),但如果你不想使用另一个VBScript文件,只是想点击批处理文件的好处,并接受以管理员权限运行(注意:您有一个正确的点击左键点击以下),我建议你:

快捷方式创建批处理文件并右键单击快捷方式>属性>快捷方式选项卡>高级现在检查以管理员身份运行入住方框。每次你从快捷方式执行它,你只需点击一下,接受运行管理员权限。

希望得到这个帮助。

相关问题