得之我幸 失之我命

when someone abandons you,it is him that gets loss because he lost someone who truly loves him but you just lost one who doesn’t love you.

bat 弹出 uac

在修改注册表的时候会需要使用管理员权限,以下bat都是基于创建并调用vbs来弹出uac获取管理员权限

尝试一:

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

这一行代码会重新以管理员运行当前的 bat 脚本文件, 注意这行代码开始的 “%1” 是接收参数用的.双击运行 “%1” 默认初始值为空, 该行代码执行, 即会执行" start … ", execute部分为提权执行当前 bat 文件, 并会传入 “::” 这个注释符号为参数则这行代码变成了注释 ":: start … ", 不会执行了, 转而接着执行下面的 bat 命令, exit 的用处就很明显了吧~这样放在第一行, 下面的所有命令就都是管理员权限运行了.

尝试二:

1
2
3
4
If not "%~1"=="H" (
 mshta vbscript:"<script language=vbs>Set UAC=CreateObject(""Shell.Application""):UAC.ShellExecute ""%~s0"", ""H"", """", ""runas"", 1:window,close</script>"
 exit
)

尝试三:

1
2
3
4
5
6
7
8
9
net session >nul 2>&1
if not "%errorLevel%" == "0" (
rem echo Oops: This tools must run with administrator permissions!
rem echo it will popup the UAC dialog, please click [Yes] to continue.
echo Set UAC = CreateObject^("Shell.Application"^) > "%temp%\getadmin.vbs"
echo UAC.ShellExecute "%~s0", "%*", "", "runas", 1 >> "%temp%\getadmin.vbs"
"%temp%\getadmin.vbs"
exit /b 2
)

%~s0 :当前脚本的全路径.
%* :当前脚本的所有参数列表.
“runas”,1 :表示以管理员身份运行.

附,将vbs写入到指定的文件中:

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
@echo off
pushd "%temp%"
:cycle
set filename=0
set /p filename=请将批处理文件拖放至此处(退出直接回车):
if %filename% == 0 exit
echo :::::::::::::::::::::::::::::::自动触发UAC::::::::::::::::::::::::::::::>part1.txt
echo @pushd "%%temp%%">>part1.txt
echo @echo.^>%%systemroot%%\testfile.tmp>>part1.txt
echo @if exist %%systemroot%%\testfile.tmp goto StartWithAdmin>>part1.txt
echo @echo Set UAC = CreateObject^^^("Shell.Application"^^^)^>getadm.vbs>>part1.txt
echo @echo UAC.ShellExecute "%%~0", "%%*", "", "runas", 1 ^>^>getadm.vbs>>part1.txt
echo @getadm.vbs>>part1.txt
echo @goto :eof>>part1.txt
echo :StartWithAdmin>>part1.txt
echo @del %%systemroot%%\testfile.tmp>>part1.txt
echo @if exist getadm.vbs del getadm.vbs>>part1.txt
echo @pushd "%%~dp0">>part1.txt
echo :::::::::::::::::::::::::::::auto touch UAC:::::::::::::::::::::::::::::>>part1.txt
echo.>>part1.txt
copy %filename% part2.txt
copy /b part1.txt + /b part2.txt /b %filename%
del part1.txt
del part2.txt
start notepad %filename%
goto cycle

be yourself, everyone else is already taken.