无忧启动论坛

标题: 批处理自动以管理员身份运行(获取管理员权限) [打印本页]

作者: hilsonma    时间: 2025-5-11 16:18
标题: 批处理自动以管理员身份运行(获取管理员权限)
本帖最后由 hilsonma 于 2025-5-11 16:22 编辑

批处理获取管理员权限的代码网上很多,最终我采用以下这一行,放在批处理开头就可以了:
  1. net session >nul 2>&1||(mshta "vbscript:createobject("shell.application").shellexecute("%~0","%~1","","runas",1)&close()" & exit)
复制代码


作者: wwoldok    时间: 2025-5-11 16:22
收藏备用,下次试试。
作者: 小灰兔    时间: 2025-5-11 16:26
感谢分享
作者: 倒垃圾的歌者    时间: 2025-5-11 16:41
方法一

  1. @echo off&(pushd "%~dp0")&(cacls "%SystemDrive%\System Volume Information" >nul 2>&1)||(start "" mshta vbscript:CreateObject^("Shell.Application"^).ShellExecute^("%~snx0"," %*","","runas",1^)^(window.close^)&exit /b)
复制代码

方法二

  1. @echo off&(pushd "%~DP0")&(REG QUERY "HKU\S-1-5-19">NUL 2>&1)||(powershell -Command "Start-Process '%~sdpnx0' -Verb RunAs"&&exit)
复制代码

方法三

  1. @ECHO OFF & CD /D %~DP0 & color f0
  2. >NUL 2>&1 reg.exe query "HKU\S-1-5-19" || (
  3.     ECHO SET UAC = CreateObject^("Shell.Application"^) > "%TEMP%\Getadmin.vbs"
  4.     ECHO UAC.ShellExecute "%~f0", "%1", "", "runas", 1 >> "%TEMP%\Getadmin.vbs"
  5.     "%TEMP%\Getadmin.vbs"
  6.     DEL /f /q "%TEMP%\Getadmin.vbs" 2>NUL
  7.     Exit /b
  8. )
复制代码

方法四

  1. %1 start "" mshta vbscript:CreateObject("Shell.Application").ShellExecute("cmd.exe","/c %~s0 ::","","runas",1)(window.close)&&exit
复制代码

从效果上,前三个可能更好

作者: 2010天月来了    时间: 2025-5-11 16:42
有机会试试
作者: yyz2191958    时间: 2025-5-11 16:52
谢谢 需要 以前用的不知道是不是
作者: sqg333    时间: 2025-5-11 17:05
学习了,感谢共享资源。
作者: wn168cn@163.com    时间: 2025-5-11 17:26
感谢分享
作者: jho    时间: 2025-5-11 17:49
感谢分享!!!
作者: jh198354    时间: 2025-5-11 17:50
谢谢分享!!!
作者: zlq_hysy    时间: 2025-5-11 19:12
倒垃圾的歌者 发表于 2025-5-11 16:41
方法一

这么多方法,收藏了
作者: 绿光科技    时间: 2025-5-11 19:17
楼主的这个更简单 只用将代码放在bat脚本的前面即可
作者: 断剑留痕    时间: 2025-5-11 19:57
本帖最后由 断剑留痕 于 2025-5-11 20:01 编辑

我自己个人在 Win10 和 Win11上 用的
@echo off & pushd "%~dp0" & cd "%~dp0" & color 0a
(Net session >nul 2>&1 || (powershell "Start-Process '%~dpnx0' -verb runas" && exit))
SetLocal EnableDelayedExpansion
title 【窗口】标题 & echo.&echo.
作者: 1801403    时间: 2025-5-11 20:20
断剑留痕 发表于 2025-5-11 19:57
我自己个人在 Win10 和 Win11上 用的
@echo off & pushd "%~dp0" & cd "%~dp0" & color 0a
(Net session  ...

Net session 有些系统不准确。
作者: 断剑留痕    时间: 2025-5-11 20:27
1801403 发表于 2025-5-11 20:20
Net session 有些系统不准确。

不准确就换这个
reg.exe query "HKU\S-1-5-19"
作者: BEIKING    时间: 2025-5-11 20:34
好的获取管理员权限方法,要能避免因为判断权限程序丢失导致的死循环。
还得保证传参正常,尤其是带双引号参数和&字符参数

作者: neil4181    时间: 2025-5-11 21:08
谢谢分享
作者: 2012飘水    时间: 2025-5-11 21:28
学习了,感谢分享
作者: yaowozhuce    时间: 2025-5-11 21:49

作者: yc2428    时间: 2025-5-11 21:55

谢谢分享!
作者: KIM3298    时间: 2025-5-12 06:10
谢谢分享
作者: 欧卡洗衣    时间: 2025-5-12 06:53
好东西,感谢分享
作者: dkzzlf    时间: 2025-5-12 07:42
感谢楼主
作者: dmgy    时间: 2025-5-12 08:13
学习了
作者: view520    时间: 2025-5-12 08:55

谢谢 学习一下
作者: shownet    时间: 2025-5-12 09:04
学习一下!!!!!!!!!
作者: wang1126    时间: 2025-5-12 09:05
谢谢楼主分享
作者: bilvnet    时间: 2025-5-12 09:11
倒垃圾的歌者 发表于 2025-5-11 16:41
方法一

哪个通用性更好??
作者: 倒垃圾的歌者    时间: 2025-5-12 09:25
bilvnet 发表于 2025-5-12 09:11
哪个通用性更好??


作者: zzq1392281    时间: 2025-5-12 11:11
一闪而过,接下来的批处理没运行
作者: guong    时间: 2025-5-12 13:59
感谢分享!
作者: hilsonma    时间: 2025-5-12 15:00
本帖最后由 hilsonma 于 2025-5-12 15:02 编辑
zzq1392281 发表于 2025-5-12 11:11
一闪而过,接下来的批处理没运行

如果是非管理员权限,则通过mshta运行vbs脚本获取管理员权限,这时如果系统内没有 mshta.exe 这个命令文件,就会发生你说的这种情况。这样的话要么补回mshta文件要么改用其他方法获取管理员权限。

当然,前提是你完全照抄了我分享的代码,如果多了空格或少了符号都可能闪退。
作者: 进士小站    时间: 2025-5-12 15:11
好东东
谢谢了
作者: freesoft00    时间: 2025-5-12 15:21
BEIKING 发表于 2025-5-11 20:34
好的获取管理员权限方法,要能避免因为判断权限程序丢失导致的死循环。
还得保证传参正常,尤其是带双引号 ...

对,写的有问题,在部分电脑环境会出现死循环。
作者: 奈绪    时间: 2025-5-12 15:29
收藏了,有机会试试看。
作者: Xinzai    时间: 2025-5-12 15:54
哦~好东西
作者: HendrikXL    时间: 2025-5-12 17:26
前来学习
作者: fegr    时间: 2025-5-13 13:14
感谢分享
作者: 12956    时间: 2025-5-13 18:22
感谢,收藏了
作者: yourfellow    时间: 2025-5-14 20:37
谢谢分享,收藏备用
作者: idcicp    时间: 2025-5-15 00:19

谢谢分享,收藏备用
作者: 2267981144    时间: 2025-5-17 14:57
感谢分享!
作者: newchen2025    时间: 2025-5-17 16:13
谢谢分享
作者: sineing168    时间: 2025-6-24 13:38
谢谢分享




欢迎光临 无忧启动论坛 (http://bbs.c3.wuyou.net/) Powered by Discuz! X3.3