Bat/PowerShell 提權執行的指令
PowerShell
啟動一個新的進程並以管理員權限執行指定的命令
Start-Process 'cmd.exe' -ArgumentList "/c $cmdStr" -Verb RunAs
Bat 通常解法
批處理檔(.bat 檔)中實現類似的功能,事情就有些不同了,因為批處理檔沒有內建的提升權限命令。
一種解決方案是創建一個臨時的 VBScript 檔,這個腳本會觸發 UAC 提示以提升權限,然後執行您的批處理檔。這裡有一個例子:
- 1. 創建一個 VBScript 檔案:
If WScript.Arguments.Count >= 1 Then
Command = WScript.Arguments(0)
Set Shell = CreateObject("Shell.Application")
Shell.ShellExecute "cmd.exe", "/c " & Command, "", "runas", 1
End If
- 2. 從批處理檔中調用這個 VBScript:
cscript //nologo elevate.vbs "您的命令"
進階手段
先利用執行內建需要管理員的程式來判斷是不是管理員
- 如果不是則委託給 PowerShell 重新讀取自己再次執行,並結束(並免重複執行自己)
- 如果已經是則繼續執行底下 bat
只需要將這行貼在首行即可
fltmc >nul || (set Admin=/x /d /c call "%~f0" %* & powershell -nop -c start cmd $env:Admin -verb runas; & exit /b)
沒有留言:
張貼留言