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


@Right
的答案修改而来(由
@周靖峰
提醒,最好先将当前目录切换到bat所在文件夹里):

来源知乎

@echo off
cd /d “%~dp0”
cacls.exe “%SystemDrive%\System Volume Information” >nul 2>nul
if %errorlevel%==0 goto Admin
if exist “%temp%\getadmin.vbs” del /f /q “%temp%\getadmin.vbs”
echo Set RequestUAC = CreateObject(“Shell.Application”)>"%temp%\getadmin.vbs"
echo RequestUAC.ShellExecute “%~s0”,"","",“runas”,1 >>"%temp%\getadmin.vbs"
echo WScript.Quit >>"%temp%\getadmin.vbs"
“%temp%\getadmin.vbs” /f
if exist “%temp%\getadmin.vbs” del /f /q “%temp%\getadmin.vbs”
exit

:Admin

:Admin后换行跟自己的批处理;
根据实际情况修改“RequestUAC”“%temp%\getadmin.vbs”这两个字段吧。

我做了补充,
一是对于生成的vbs要做清理嘛;

二是要让Wscript执行WScript.Quit来结束进程,不然进程里会一直有脚本解释器在运行;

另外,是关于操作系统的版本这个问题:
(当然可能是自作多情)
我考虑了在低于Vista/2008的情况下,关于UAC的问题。
我有毒…
UAC并不存在于XP里,嗯。

当然我也考虑了把批处理放在低于Vista/2008操作系统里运行的情况:
若是在管理员账户(包括超级管理员)下运行,那就不需要前面这个判断UAC的了;
若是在受限账户下运行,要拿权限,我猜就需要Hack点的手段了吧,不是很懂。

所以如果需要判断操作系统的,那就把这段放最前面:

@echo off
ver|findstr “[6,10].[0-9].[0-9][0-9]" > nul && (goto Main)
ver|findstr "[3-5].[0-9].[0-9][0-9]
” > nul && (goto isBelowNT6)

:isBelowNT6

:Main

(判断操作系统这个来源于网络)

  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 2
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 2
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值