144人参与 • 2024-09-08 • Dos/bat
@echo off&(pushd "%~dp0")&(reg query "hku\s-1-5-19">nul 2>&1)||( powershell -command "start-process '%~sdpnx0' -verb runas"&&exit)
这个操作方式比较多,核心思想就是试图访问需要管理员身份才可以访问的资源,可以访问则有权限,不可以访问则没有权限
以下三种方式都可以进行判断,可以灵活使用
"%systemroot%\system32\cacls.exe" "%systemroot%\system32\config\system" reg query "hku\s-1-5-19" net.exe session
提供两种方式
mshta vbscript:createobject("shell.application").shellexecute("cmd.exe","/c %~s0 ::","","runas",1)(window.close)
%~sdpnx0: 指向当前批处理文件
powershell -command "start-process '%~sdpnx0' -verb runas"
powershell -command "start-process '%~sdpnx0' -verb runas"&&exit
这是一个powershell命令,用于以管理员权限启动当前执行的脚本。
这段代码的主要部分是 start-process '%~sdpnx0' -verb runas,其中 %~sdpnx0 是一个批处理脚本中的变量替换,表示当前执行的批处理脚本文件的全路径名。-verb runas 参数指示 start-process 使用提升的权限运行进程。
但是,这个命令在 powershell 中并不会直接以管理员权限运行当前脚本,因为 %~sdpnx0 这个变量替换在 powershell 中不会被正确解析。在 powershell 中,你可以使用 $pscommandpath 变量来获取当前脚本的完整路径,然后使用 start-process 命令以管理员权限运行它。
下面是一个修改后的 powershell 命令,它可以以管理员权限运行当前脚本:
start-process "$pscommandpath" -verb runas
如果你想要这个命令在执行后自动退出,你可以在命令的末尾添加 & exit,如下所示:
start-process "$pscommandpath" -verb runas & exit
请注意,这些命令应该在 powershell 脚本中使用,而不是在批处理文件中。批处理文件中应使用不同的语法。
提供两种组合方式,代码放于批处理前面使用即可,其他自由组合
:: 方式一 reg query "hku\s-1-5-19">nul 2>&1||(powershell -command "start-process '%~sdpnx0' -verb runas"&&exit) :: 方式二 reg query "hku\s-1-5-19">nul 2>&1||mshta vbscript:createobject("shell.application").shellexecute("cmd.exe","/c %~s0 ::","","runas",1)(window.close)&&exit
将以下代码加在开头
第一种:
@echo off >nul 2>&1 "%systemroot%\system32\cacls.exe" "%systemroot%\system32\config\system" if '%errorlevel%' neq '0' ( goto uacprompt ) else ( goto gotadmin ) :uacprompt echo set uac = createobject^("shell.application"^) > "%temp%\getadmin.vbs" echo uac.shellexecute "%~s0", "", "", "runas", 1 >> "%temp%\getadmin.vbs" "%temp%\getadmin.vbs" exit /b :gotadmin if exist "%temp%\getadmin.vbs" ( del "%temp%\getadmin.vbs" ) pushd "%cd%" cd /d "%~dp0"
第二种:
@ echo off %1 mshta vbscript:createobject("shell.application").shellexecute("cmd.exe","/c %~s0 ::","","runas",1)(window.close)&&exit cd /d "%~dp0" :admin
更多内容可以参考这篇文章 让bat批处理以管理员权限运行的实现方法
您想发表意见!!点此发布评论
版权声明:本文内容由互联网用户贡献,该文观点仅代表作者本人。本站仅提供信息存储服务,不拥有所有权,不承担相关法律责任。 如发现本站有涉嫌抄袭侵权/违法违规的内容, 请发送邮件至 2386932994@qq.com 举报,一经查实将立刻删除。
发表评论