IP代理脚本和脚本提权

发布于 2023-01-18  321 次阅读


权限的获取

  • 我自己写了几个程序,涉及到服务的自动化控制和代理控制,在语言内实现这几个服务的控制是比较难的,所以就用批处理写好了脚本,要用直接调用一下就行了,但是出现了权限的问题
  • 有些脚本中的命令需要管理员权限,导致每次打开bat文件都会被提示以管理员启动cmd,导致调用的过程就很难受,但事实上有两种办法可以解决这个问题
  • 方法1:bat脚本获取管理权限
@echo off&color 17
if exist "%SystemRoot%\SysWOW64" path %path%;%windir%\SysNative;%SystemRoot%\SysWOW64;%~dp0
bcdedit >nul
if '%errorlevel%' NEQ '0' (goto UACPrompt) else (goto UACAdmin)
:UACPrompt
%1 start "" mshta vbscript:createobject("shell.application").shellexecute("""%~0""","::",,"runas",1)(window.close)&exit
exit /B
:UACAdmin
cd /d "%~dp0"
echo 当前运行路径是:%CD%
echo 已获取管理员权限

不管后面要干什么,脚本开头加入这段代码就可以以管理员启动了
  • 方法2:把bat文件打包成exe并设置exe只能以管理员的身份启动的属性(推荐)
  • 这里使用Bat_To_Exe_Converter来实现bat转exe
  • 网上下好程序后,不用安装直接打开,先将菜单栏的language设置为中文再说🤔
  • 点击右方的uac选项:需要管理员权限,这样转换成的exe每次启动时就会自动以管理员身份运行了
  • 软件还有一些其他的生成选项,比如密码保护,写入开发者信息,加壳,是否输出到cmd等

ip代理控制

  • 以下脚本实现ip的代理
@echo off
for /f "tokens=1,2,* " %%i in ('REG QUERY "HKCU\Software\Microsoft\Windows\CurrentVersion\Internet Settings" /v ProxyEnable ^| find /i "ProxyEnable"') do (set /A ProxyEnableValue=%%k)

if %ProxyEnableValue% equ 0 (
    echo offed
    echo=
    reg add "HKCU\Software\Microsoft\Windows\CurrentVersion\Internet Settings" /v ProxyEnable /t REG_DWORD /d 1 /f >nul 2>nul
    reg add "HKCU\Software\Microsoft\Windows\CurrentVersion\Internet Settings" /v ProxyServer /d "代理服务器ip:服务端口" /f >nul 2>nul
    echo opening...
) else if %ProxyEnableValue% equ 1 (
    echo opened
    echo=
    reg add "HKCU\Software\Microsoft\Windows\CurrentVersion\Internet Settings" /v ProxyEnable /t REG_DWORD /d 0 /f >nul 2>nul
    reg add "HKCU\Software\Microsoft\Windows\CurrentVersion\Internet Settings" /v ProxyServer /d "" /f >nul 2>nul
    echo closing
)
pause>nul
  • 在代理开启时运行脚本会自动关闭代理,在代理打开后运行脚本会自动关闭代理
  • 把代理服务器ip和服务端口改成你拥有的即可

dns代理

  • 注意:因为dns代理控制需要管理员权限,所以默认加入提权代码,功能实现代码只有最后一句
  • 以下脚本实现dns的代理开启
@echo off&color 17
if exist "%SystemRoot%\SysWOW64" path %path%;%windir%\SysNative;%SystemRoot%\SysWOW64;%~dp0
bcdedit >nul
if '%errorlevel%' NEQ '0' (goto UACPrompt) else (goto UACAdmin)
:UACPrompt
%1 start "" mshta vbscript:createobject("shell.application").shellexecute("""%~0""","::",,"runas",1)(window.close)&exit
exit /B
:UACAdmin
cd /d "%~dp0"
echo 当前运行路径是:%CD%
echo 已获取管理员权限

netsh interface ip set dns "网络适配器名字" static 你的dns代理服务器ip
  • 需要将dns代理服务器ip填入"你的dns代理服务器ip",还需填入网络适配器名字,比如wifi默认是WLAN,宽带默认是本地连接
  • 以下脚本实现dns的代理关闭
@echo off&color 17
if exist "%SystemRoot%\SysWOW64" path %path%;%windir%\SysNative;%SystemRoot%\SysWOW64;%~dp0
bcdedit >nul
if '%errorlevel%' NEQ '0' (goto UACPrompt) else (goto UACAdmin)
:UACPrompt
%1 start "" mshta vbscript:createobject("shell.application").shellexecute("""%~0""","::",,"runas",1)(window.close)&exit
exit /B
:UACAdmin
cd /d "%~dp0"
echo 当前运行路径是:%CD%
echo 已获取管理员权限

netsh interface ip set dns "WLAN" dhcp
  • 需要填入网络适配器名字,比如wifi默认是WLAN,宽带默认是本地连接
  • 这俩脚本因为编码的问题,中文显示出来可能是乱码
  • 至于dot和doh的控制,,,,呵呵🙃
届ける言葉を今は育ててる
最后更新于 2024-02-07