1. 程式人生 > 其它 >身份切換指令碼,免登入切換許可權的利器

身份切換指令碼,免登入切換許可權的利器

分享一個我曾經寫過的功能程式碼:工具身份切換指令碼,主要用於指令碼執行期間其他身份(如 administrator 等)的切換,從而獲取到所需許可權。 使用說明:

1.將下面的程式碼儲存為 bat 指令碼,如 switch.bat,其中的【你要加權執行的外部程式或指令碼】需要根據實際情況修改成你將要執行的檔案路徑

2.在你切換前啟動的指令碼中加入 call "%~dp0switch.bat" (%~dp0 表示同一目錄) 3.你可以將【你要加權執行的外部程式或指令碼】修改成一個變數,比如%0 或%1 ,%0 表示切換本身指令碼的執行身份,而%1 則表示切換引數 1 的身份

Ps:%1 詳解,若下面的程式碼你修改成【runas /user:administrator "%1" >nul

】,則可以使用call "%~dp0switch.bat" other.bat 來切換 other.bat 的執行身份。

@echo off   
color 3f   
mode con cols=37 lines=20   
setlocal enabledelayedexpansion   
:start   
cls   
title User Switcher    
echo=   
echo         ╭—————————╮   
echo         $  ※身份切換助手※  $   
echo         $====================$   
echo         $ 設計:  Mars丶Ge   $   
echo         ╰—————————╯   
echo=   
echo           1.切換到超級管理員   
echo=   
echo           2.切換到其他使用者   
echo=   
echo           0.返回上一級   
echo=   
echo=   
echo          ※直接回車檢視說明※   
echo=   
echo=   
set choice=   
set /p choice=請輸入[序號+回車]:   
if "%choice%"=="1" goto admin   
if "%choice%"=="2" goto other   
if "%choice%"=="0" goto :eof  
cls   
echo=   
echo             ※功能說明※   
echo=   
echo=   
echo    實現外部呼叫此指令碼切換至到其他   
echo=     
echo 身份,如切換到超級管理員等。   
echo=   
echo    注意事項:若是切換到AD賬號請輸入   
echo=   
echo 完整名稱,如domianusername格式。   
echo=   
echo=    
echo=   
echo=   
echo=   
echo=   
echo 任意鍵返回....          
pause>nul   
goto start   
  
:admin    
cls   
if /i not %username%==administrator (   
    echo 請輸入Administrator的密碼:   
    runas /user:administrator "你要加權執行的外部程式或指令碼" >nul   
    if !errorlevel! EQU 0 (   
        exit  
    ) else (   
        cls   
        echo 驗證失敗,請重試....   
        pause>nul   
        goto start   
    )   
) else (   
   echo 已是Administrator!無需切換.... & pause>nul & goto :eof  
)   
  
:other   
cls   
title 切換到其他使用者[返回請輸入Q+回車]   
echo 溫馨提示:當前使用者名稱為:%username%   
echo=   
set namer=   
set /p namer=請輸入使用者名稱:   
if /i "%namer%"=="Q" goto start   
echo=   
echo 請輸入%namer%的密碼:   
runas /user:%namer% "你要加權執行的外部程式或指令碼" >nul   
if !errorlevel! EQU 0 (   
        exit  
    ) else (   
        cls   
        echo 驗證失敗,請重試....   
        pause>nul   
        goto other   
    )