Skip to content

Instantly share code, notes, and snippets.

@taozhiyu
Last active February 1, 2025 11:58
Show Gist options
  • Save taozhiyu/a56b8985677c3fd3f74c52590baf1588 to your computer and use it in GitHub Desktop.
Save taozhiyu/a56b8985677c3fd3f74c52590baf1588 to your computer and use it in GitHub Desktop.
lm studio network controller
:: 请以 ASCII 编码保存 | PLEASE SAVE AS ENCODING ASCII !!!
:: 使用 | Usage:
:: 1. 直接打开 | Just double-click Open
:: 2. filename [option]
:: option:
:: enable | 启用网络控制(禁用网络)
:: disable | 禁用网络控制(恢复网络)
:: @Author taozhiyu(涛之雨) @ https://github.com/taozhiyu
:: @License GPL-3.0-or-later
:: @GIST PAGE https://gist.github.com/taozhiyu/a56b8985677c3fd3f74c52590baf1588
@echo off
setlocal enabledelayedexpansion
for /f %%a in ('echo prompt $E ^| cmd') do set "ESC=%%a"
set "RED=%ESC%[31m"
set "GREEN=%ESC%[32m"
set "YELLOW=%ESC%[33m"
set "CYAN=%ESC%[36m"
set "RESET=%ESC%[0m"
NET FILE 1>NUL 2>&1 || (
echo %YELLOW%请求管理员权限...%RESET%
if "%1" NEQ "" (
PowerShell -Command "Start-Process -FilePath '%~0' -Verb RunAs -ArgumentList '%*'" && EXIT
)
PowerShell -Command "Start-Process -FilePath '%~0' -Verb RunAs" && EXIT
)
set "LM_PATH="
set "ELEVATE_PATH="
set "LMS_PATH=%USERPROFILE%\.lmstudio\bin\lms.exe"
for %%K in ("HKEY_LOCAL_MACHINE" "HKEY_CURRENT_USER") do (
if not defined LM_PATH (
for /f "tokens=2*" %%A in ('reg query "%%~K\SOFTWARE\c6dbe996-22a9-5998-b542-7abe33da3b83" /v InstallLocation 2^>nul') do (
if "%%A"=="REG_SZ" set "LM_PATH=%%B"
)
)
)
if not defined LM_PATH (
echo %RED%错误:未找到LM Studio安装路径%RESET%
pause
exit /b 1
)
set "ELEVATE_PATH=%LM_PATH%\resources\elevate.exe"
if not exist "%LM_PATH%\LM Studio.exe" (
echo %RED%错误:在 %LM_PATH% 未找到 LM Studio.exe%RESET%
pause
exit /b 1
)
if not exist "%ELEVATE_PATH%" (
echo %RED%错误:在 %ELEVATE_PATH% 未找到 elevate.exe%RESET%
pause
exit /b 1
)
if not exist "%LMS_PATH%" (
echo %YELLOW%警告:在 %LMS_PATH% 未找到 lms.exe%RESET%
echo %YELLOW%打开程序后可能会自动生成%RESET%
)
if "%1" NEQ "" (
set "action=%1"
goto mainfunction
)
:menu
cls
echo %CYAN%LM Studio 网络控制工具%RESET%
echo Power by 涛之雨(taozhiyu)
echo License GPL-3.0-or-later
echo ====================================
echo %GREEN%[1] 启用封锁%RESET% 阻止所有网络通信
echo %RED%[2] 解除封锁%RESET% 恢复网络访问权限
echo ====================================
set /p "choice=请输入操作编号 (1/2): "
if "%choice%"=="1" (
set "action=enable"
) else if "%choice%"=="2" (
set "action=disable"
) else (
echo %RED%无效输入,请重新选择%RESET%
timeout /t 2 >nul
goto menu
)
:mainfunction
if /i "%action%"=="enable" (
echo %YELLOW%[ 正在配置LM Studio规则... ]%RESET%
netsh advfirewall firewall add rule name="LM Studio" dir=out action=block program="%LM_PATH%\LM Studio.exe" enable=yes >nul 2>&1
netsh advfirewall firewall add rule name="LM Studio" dir=in action=block program="%LM_PATH%\LM Studio.exe" enable=yes >nul 2>&1
echo %YELLOW%[ 正在配置Elevate规则... ]%RESET%
netsh advfirewall firewall add rule name="LM Studio Elevate" dir=out action=block program="%ELEVATE_PATH%" enable=yes >nul 2>&1
netsh advfirewall firewall add rule name="LM Studio Elevate" dir=in action=block program="%ELEVATE_PATH%" enable=yes >nul 2>&1
if exist "%LMS_PATH%" (
echo %YELLOW%[ 正在配置LMS规则... ]%RESET%
netsh advfirewall firewall add rule name="LMS Server" dir=out action=block program="%LMS_PATH%" enable=yes >nul 2>&1
netsh advfirewall firewall add rule name="LMS Server" dir=in action=block program="%LMS_PATH%" enable=yes >nul 2>&1
)
echo %GREEN%[SUCCESS] 网络封锁已生效!%RESET%
) else if /i "%action%"=="disable" (
echo %YELLOW%[ 正在清除防火墙规则... ]%RESET%
echo %CYAN%[正在删除LM Studio规则]%RESET%
netsh advfirewall firewall delete rule name="LM Studio" program="%LM_PATH%\LM Studio.exe" >nul 2>&1
echo %CYAN%[正在删除Elevate规则]%RESET%
netsh advfirewall firewall delete rule name="LM Studio Elevate" program="%ELEVATE_PATH%" >nul 2>&1
if exist "%LMS_PATH%" (
echo %CYAN%[正在删除LMS规则]%RESET%
netsh advfirewall firewall delete rule name="LMS Server" program="%LMS_PATH%" >nul 2>&1
)
echo %GREEN%[SUCCESS] 网络访问已恢复!%RESET%
) else (
goto menu
)
timeout /t 5 >nul
endlocal
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment