怎样自动以管理员身份运行bat文件

C++

Posted by JS on December 19, 2023

命令行

%1 start "" mshta vbscript:CreateObject("Shell.Application").ShellExecute("%~s0","::","%~dp0","runas",1)(window.close)&&exit

说明

这一行代码会重新以管理员运行当前的 bat 脚本文件, 注意这行代码开始的 “%1” 是接收参数用的.

双击运行 “%1” 默认初始值为空, 该行代码执行, 即会执行” start … “, execute 部分为提权执行当前 bat 文件, 并会传入 “::” 这个注释符号为参数

则这行代码变成了注释 “:: start … “, 不会执行了, 转而接着执行下面的 bat 命令, exit 的用处就很明显了吧~

这样放在第一行, 下面的所有命令就都是管理员权限跑的了。

解释一下 ShellExecute(“%~s0”,”::”,”%~dp0”,”runas”,1):

当前值 当前值含义 参数含义
%~s0 脚本的绝对路径 要执行程序的路径
:: 注释符号 执行时传给程序的参数
%~dp0 脚本所在目录的绝对路径 执行程序时的工作目录
runas 以管理员权限执行 执行程序时的操作
1 正常显示执行窗口 执行窗口的显示方式(0=隐藏窗口,1=正常,2=最小化,3=最大化)

参考

ShellExecuteA function (shellapi.h) - Win32 apps

作者:Scruel 链接:https://www.zhihu.com/question/34541107/answer/243592603 来源:知乎 著作权归作者所有。商业转载请联系作者获得授权,非商业转载请注明出处。