如何在命令提示符下以“以管理员身份运行”方式运行应用程序?

149

我有一个名为test.bat的批处理文件。我在test.bat文件中调用以下指令:

start /min powershell.exe %sysdrive%\testScripts\testscript1.ps1

我通过命令提示符成功运行了测试脚本,但我想以管理员身份运行它(就像我创建桌面快捷方式并以管理员身份运行一样)。它不应提示任何用户名或密码。

我尝试在上面的 test.bat 中添加/elevate/NOUAC参数,但没有成功。我该如何解决这个问题?

我知道如何手动完成,但我希望从命令提示符中执行此操作。

(由Marnix Klooster发布):…不使用任何其他工具,例如Super User问题的答案中建议的那些工具如何使用提升权限运行程序。)


97
这个问题适合在这里提问,并且不应该被关闭为离题。它是一个与编程和软件开发相关的问题。DotNet程序和C++都能够通过调用控制台命令或者简单地通过批处理文件与系统和其他程序进行迭代交互。 - Steven Du
2
这对我很有用:http://superuser.com/questions/55809/how-to-run-program-from-command-line-with-elevated-rights 有时,“以管理员身份运行”预期意味着“以提升的权限运行”。 - User
sudo.bat 可能会对某些人有用。http://pastebin.com/taHp4FzR - Niklas R
阅读更多有关创建VBScript的内容:http://ss64.com/vb/syntax-elevate.html - Future
2
应该将其移至超级用户,而不是关闭(并标记为 http://superuser.com/questions/55809/how-to-run-program-from-command-line-with-elevated-rights 的重复)。 - Julien Kronegg
3个回答

102

试一下这个:

runas.exe /savecred /user:administrator "%sysdrive%\testScripts\testscript1.ps1" 

它会在第一次保存密码后就不再询问。也许当您更改管理员密码时,系统会再次提示您输入密码。


6
虽然这样做可以得到正确的结果,但这绝对是一个可怕的想法,因为它破坏了UAC的整个概念。 - Ben Voigt
10
@BenVoigt,请提出一个替代方案。 - Daniel Sokolowski
16
尝试使用powershell -Command "Start-Process 'C:\program.exe' -Verb runAs"命令(将C:\program.exe替换为你的命令),参见http://superuser.com/questions/55809/how-to-run-program-from-command-line-with-elevated-rights。 - Julien Kronegg
14
为什么我可以右键单击其他程序并以管理员身份运行而无需输入密码,但在某些情况下需要输入密码才能运行?谢谢。 - RayLoveless
4
@BenVoigt 不要发怒。像任何权力命令一样,在特定的情境下使用它是有用且必要的。 - arkon
显示剩余9条评论

25

请参考这篇TechNet文章:Runas 命令文档

从命令提示符中执行:

C:\> runas /user:<localmachinename>\administrator cmd

或者,如果你已经连接到一个域:

C:\> runas /user:<DomainName>\<AdministratorAccountName> cmd

我重新阅读了你的问题,你不想被提示。我的建议会导致密码提示。抱歉! - John Ruiz
15
我尝试了这个命令,它要求凭据,但不应该要求凭据,正如我在查询中提到的那样。如果我右键单击桌面项并以管理员身份运行,则是预期的行为。 - Praveen Jakkaraju

9
看起来使用 psexec -h 就可以实现这个功能:
 -h         If the target system is Windows Vista or higher, has the process
            run with the account's elevated token, if available.

这个似乎没有在 Sysinternals - PsExec 的在线文档中列出。

但是它在我的机器上能够工作。


这里不起作用。相反,我只得到了帮助输出。 - ygoe
8
除非我从已经具有管理员权限的进程中运行它,否则似乎无法正常工作:“无法安装PSEXESVC服务”。 - Vince
1
我在Windows 10中甚至没有这个命令。--无论是从命令提示符还是Power Shell都不行。 - BrainSlugs83
1
@BrainSlugs83,你需要下载它,链接在答案中。 - Abel

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接