我正在编写一个批处理文件,该文件将在用户之间分发。我需要以提升的权限运行一些命令。我最初的解决方案是使用:
runas /noprofile /user:Administrator SOME_COMMAND
但是,许多机器(包括我的机器)都没有激活隐藏的管理员帐户,因此没有设置管理员密码。我也不能指定其他用户名,因为不同的计算机将具有不同的用户。是否可以通过批处理文件复制“右键单击->以管理员身份运行”操作?我不介意弹出提示,只是不想让用户显式右键单击并以管理员身份运行。
您可以利用每个现代Windows系统中都存在的PowerShell。
将需要提升的命令拆分为单独的批处理文件,例如elevated.bat
。然后,当需要运行它们时,请在非高架脚本中使用此命令:
powershell -command "Start-Process elevated.bat -Verb runas"
该-Verb runas
部分是引起高程提示的原因。如果原始批处理文件已经以admin身份运行,或者如果关闭了UAC提示,则新文件将被提升而没有提示。
请注意,提升的批处理程序的当前目录将以开头System32
。如果这是一个问题,则可以使用此替代版本来使它在与非提升脚本相同的目录中启动:
powershell -command "Start-Process cmd -ArgumentList '/c cd /d %CD% && elevated.bat' -Verb runas"
这将导致新cmd
实例首先cd
进入未提升的提示%CD%
变量提供的目录中,然后执行所需的批处理文件。
本文收集自互联网,转载请注明来源。
如有侵权,请联系 [email protected] 删除。
我来说两句