bat提升管理员权限执行命令行

bash 复制代码
@echo off
net session >nul 2>&1
if %errorLevel% == 0 (
    echo 已拥有管理员权限...
    goto :run
) else (
    echo 正在请求管理员权限...
    goto UACPrompt
)

:UACPrompt
set "script=%~s0"
echo Set UAC = CreateObject("Shell.Application") > "%temp%\getadmin.vbs"
echo UAC.ShellExecute "wt.exe", "cmd /k " ^& Chr(34) ^& "%script%" ^& Chr(34), "", "runas", 1 >> "%temp%\getadmin.vbs"
"%temp%\getadmin.vbs"
exit /B

:run
cd /d "%~dp0"
echo 当前目录: %cd%
echo 当前权限: 管理员
claude-internal

cmd /k
  • net session 这个命令只有管理员权限才能成功执行,否则会报错,通过判断 %errorLevel% 来检测当前是否是管理员权限。
  • set "script=%~s0" 表示当前批处理文件的短路径名(短8.3格式路径),用来避免路径中带空格等问题。把当前批处理脚本路径赋给变量 script
  • 向临时文件 %temp%\getadmin.vbs 写入一句 VBScript 代码:Set UAC = CreateObject("Shell.Application") 创建一个Shell应用对象,用来调用Windows Shell的功能(比如提升权限)。
  • 向同一个 VBScript 文件追加写入执行命令:UAC.ShellExecute 是调用Shell应用来启动新程序。"wt.exe" 是 Windows Terminal 程序(Windows 10和11自带的终端模拟器)。"cmd /k " ^& Chr(34) ^& "%script%" ^& Chr(34):这是给 Windows Terminal 里执行的命令。cmd /k "路径\脚本名",在 cmd 中执行当前脚本并保持窗口打开。这里用 Chr(34) 代替双引号,防止路径带空格导致语法错误。"" 空字符串表示没有使用特定工作目录。"runas" 表明要以管理员权限运行(UAC提升)。1 表示以普通窗口显示程序。
  • "%temp%\getadmin.vbs" 直接运行刚才生成的 VBScript 文件,从而触发提升权限的命令执行。
  • exit /B 终止当前批处理脚本的执行(从调用处退出批处理脚本,而不是关闭整个命令窗口)。常用于批处理脚本里结束脚本或某个子程序。

claude-internal 是实际目标命令行,cmd /k 执行完指定命令后,不关闭命令行窗口,保持窗口打开。

相关推荐
吳所畏惧8 个月前
NVM踩坑实录:配置了npm的阿里云cdn之后,下载nodejs老版本(如:12.18.4)时,报404异常,下载失败的问题解决
前端·windows·阿里云·npm·node.js·batch命令
乌云暮年9 个月前
Git简单命令
git·gitee·github·batch命令
stormsha10 个月前
Linux中su与sudo命令的区别:权限管理的关键差异解析
linux·运维·服务器·鸿蒙系统·ux·batch命令
dudly1 年前
用Python打造自己的专属命令行工具
开发语言·python·batch命令
ew452181 年前
【JAVA】bat批处理命令启动jar包
java·pycharm·jar·batch命令
Pfolg1 年前
定时关机(python)
windows·python·batch命令·定时关机
何中应1 年前
如何使用CMD命令启动应用程序(二)
windows·桌面应用·batch命令
武话不港12 年前
rabbitMQ本地启动快捷方式
rabbitmq·batch命令
Rcain_R2 年前
CentOS的常用命令
linux·运维·服务器·chrome·centos·命令模式·batch命令