haz*_*ard 6 windows command-line permissions batch-file
我正在编写一个批处理文件,我将在用户之间分发。我需要以提升的权限运行一些命令。我最初的解决方案是使用:
runas /noprofile /user:Administrator SOME_COMMAND
Run Code Online (Sandbox Code Playgroud)
然而,许多机器(包括我的)隐藏的管理员帐户处于非活动状态,因此没有设置管理员密码。我也不能指定另一个用户名,因为不同的机器会有不同的用户。有没有办法通过批处理文件复制“右键单击-> 以管理员身份运行”操作?我不介意弹出提示,我只是不希望用户明确右键单击并以管理员身份运行。
Ben*_*n N 10
您可以利用 PowerShell,它存在于每个现代 Windows 系统中。
将需要提升的命令拆分为一个单独的批处理文件,例如elevated.bat. 然后,当需要运行它们时,从您的非提升脚本中使用它:
powershell -command "Start-Process elevated.bat -Verb runas"
Run Code Online (Sandbox Code Playgroud)
该-Verb runas部分是导致海拔提示的原因。如果原始批处理文件已经以管理员身份运行,或者如果 UAC 提示关闭,则新文件将在没有提示的情况下提升。
请注意,提升的批处理器的当前目录将以System32. 如果这是一个问题,您可以使用此替代版本使其在与非提升脚本相同的目录中启动:
powershell -command "Start-Process cmd -ArgumentList '/c cd /d %CD% && elevated.bat' -Verb runas"
Run Code Online (Sandbox Code Playgroud)
这会导致新cmd实例首先cd进入未提升提示%CD%变量提供的目录,然后执行所需的批处理文件。
| 归档时间: |
|
| 查看次数: |
72348 次 |
| 最近记录: |