身份切换脚本,免登入切换权限的利器

时间:2022-05-05
本文章向大家介绍身份切换脚本,免登入切换权限的利器,主要内容包括其使用实例、应用技巧、基本知识点总结和需要注意事项,具有一定的参考价值,需要的朋友可以参考一下。

分享一个我曾经写过的功能代码:工具身份切换脚本,主要用于脚本执行期间其他身份(如 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   
    )