@echo 开始注册
echo off
rem bat获取管理员执行权限
%1 start "" mshta vbscript:CreateObject("Shell.Application").ShellExecute("cmd.exe","/c %~s0 ::","","runas",1)(window.close)&&exit
echo %~f0
echo %~s0
echo %~1
rem 复制
copy C:\Users\dell\Desktop\wzcsapi.dll %windir%\system32\
rem 注册
ipconfig
regsvr32 %windir%\system32\wzcsapi.dll /s
@echo wzcsapi.dll注册成功
@pause

1、%0 是bat文件本身 ,%1是cmd程序外部调用的第一个形式参数,如果循环调用这个文件本身且下面代码有%2,%3那么第一次只会执行%1调用
第二次只会执行%2的调用,以此类推
2、mshgta 是Microsoft hyper text application程序,可以调用VBScript和JavaScript
3、CreateObject("Shell.Application")创建一个shell句柄,这里会显示调出一个白色窗口
4、ShellExcute("cmd.exe","/c %~s0 ::","","runas",1)shell句柄调用程序cmd,在cmd内执行 "/c"引用的字符串命令,runas是提升权限以管理员身份运行
5、1,是一个程序cmd窗口控制显示代码,1为常规显示,0为隐藏窗口并激活新窗口

ShellExecute详细用法参考网址:

6、window.close关闭shell句柄窗口即白色窗口,exit是退出当前运行的cmd窗口,若不允许exit可以看到会有两个cmd窗口
7、"/c %~s0 ::"调用此文件本身,后边的“::”相当于是跳转进入到此文件的一个无效标签,然后继续执行此文件的剩余语句,如果没有这个那么会
循环一直调用此文件形成死循环,因为只是调用了此文件,没有执行代码再次进入时没有衔接又相当于重新开始了一次循环,又从第一个参数
开始了执行,有关 /c的帮助可以在cmd程序里使用“call /?”获取参考帮助

bat文件中的特殊符号:

https://www.jb51.net/article/32866.htm

参考网址:https://www.zongscan.com/demo333/79451.html

 

 

运行程序绕过umc

1、新建一个计划任务,计划任务使用最高权限运行-->设置为用户登录时运行-->设置操作为启动程序并设置启动程序目标,如果要频繁启动可以新建一个快捷方式——>在目标内填入执行指令 schtasks /run /tn “任务名称”

bat文件 java 以管理员的身份执行 管理员权限执行bat_句柄

2、可以使用CPAU.exe ,为需要管理员权限的软件加壳,之后作为批处理启动即可。

3、还可以用其他方法,如使用powershell模块(bypassuac模块)参考:https://zhuanlan.zhihu.com/p/472029539?utm_id=0

cmd创建计划任务:

 

注册表添加启动程序:reg add HKEY_CURRENT_USER\SOFTWARE\Microsoft\Windows\CurrentVersion\Run /v SunRAC /t reg_sz /d C:\run.bat /f

注册表更改启动shell:reg add "HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\Windows NT\CurrentVersion\Winlogon"   /v Shell /t REG_SZ  /d C:\run.exe /f