Steam禁止联网

1.禁止应用联网:

1.1.打开“控制面板”。

1.2.将右上角“查看方式”改为“大图标”。

1.3.打开“Windows defender防火墙”。

1.4.点击左边栏的“高级设置”。

1.5.点击左边“出站规则”,再点击右上角“新建规则”。

1.6.选择“程序”并点击“下一步”。

1.7.点击“浏览”找到想要禁止联网的软件快捷方式打开。

1.8.勾选“阻止连接”并点击“下一步”。

1.9.其余设置全都保持默认,最后随便设置一个名称并点击“完成”就能禁止该应用联网了。

2.恢复应用联网功能:

只需要在高级设置界面禁用出站规则即可。

3.steam网络阻断器(BAT脚本):

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
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
137
138
139
140
141
142
143
144
145
146
147
148
149
150
151
152
153
154
155
156
157
158
159
160
161
162
163
164
165
166
167
168
169
170
171
172
173
174
175
176
177
178
179
180
181
182
183
184
185
186
187
188
189
190
191
@echo off
title Steam 网络工具 - by zgfnye
color 0E
setlocal enabledelayedexpansion


:: 配置文件路径(放在用户文件夹)
set "ConfigFile=%USERPROFILE%\.steam_tool_config.txt"

:: 读取保存的路径(如果存在)
if exist "%ConfigFile%" (
set /p SteamPath=<"%ConfigFile%"
) else (
:: 默认路径
set "SteamPath=C:\Program Files (x86)\Steam"
)


:menu
cls
echo ========================================
echo Steam 网络阻断器 - by zgfnye
echo ========================================
echo.
echo 1. 断开网络 (Disconnect)
echo.
echo 2. 恢复网络 (Connect)
echo.
echo 3. 查看规则 (Check status)
echo.
echo 4. 设置路径 (Change Steam path)
echo.
echo 5. 退出 (Exit)
echo.
echo ========================================
echo 用途: 阻断Steam网络,方便使用家庭库共享
echo.
echo 当前路径: %SteamPath%
echo ========================================
echo.

set /p choice=请输入选项 (1-5):

if "%choice%"=="1" goto block
if "%choice%"=="2" goto unblock
if "%choice%"=="3" goto view
if "%choice%"=="4" goto setpath
if "%choice%"=="5" exit
goto menu

:setpath
cls
echo 当前路径: %SteamPath%
echo.
set /p SteamPath=请输入新的Steam安装路径:

:: 去掉路径末尾可能存在的反斜杠
if "!SteamPath:~-1!"=="\" set "SteamPath=!SteamPath:~0,-1!"

:: 保存到配置文件
echo %SteamPath% > "%ConfigFile%"

echo.
echo 路径已更新为: %SteamPath%
pause
goto menu

:view
cls
echo ========================================
echo 查看防火墙规则
echo ========================================
echo.

echo [Steam 相关规则]
echo ------------------------
netsh advfirewall firewall show rule name=all | findstr /i "Steam" 2>nul
if errorlevel 1 echo 没有找到Steam相关规则

echo.
echo ------------------------
echo [Block_Steam 阻断规则]
netsh advfirewall firewall show rule name=all | findstr /i "Block_Steam" 2>nul
if errorlevel 1 echo 没有找到Block_Steam规则

echo.
echo ========================================
echo 状态说明: 有 Block_Steam 规则 = 已断网
echo 无 Block_Steam 规则 = 已联网
echo ========================================
echo.
pause
goto menu

:block
cls
echo ========================================
echo 断开网络 (断网模式)
echo ========================================
echo.

:: 检查管理员权限
net session >nul 2>&1
if %errorlevel% neq 0 (
echo 错误: 需要管理员权限!
echo 请右键选择"以管理员身份运行"
pause
goto menu
)

:: 关键修复:确保路径是短文件名格式
for %%A in ("%SteamPath%") do set "SteamPathShort=%%~sA"
set "exe=%SteamPathShort%\Steam.exe"

echo 调试: 短路径 = %SteamPathShort%
echo 调试: exe = %exe%
echo.

:: 检查文件是否存在
if not exist "%exe%" (
echo 错误: 找不到 Steam.exe
echo 路径: %exe%
echo.
pause
goto menu
)

echo 正在添加防火墙规则...

:: 添加规则
netsh advfirewall firewall show rule name="Block_Steam" >nul 2>&1
if errorlevel 1 (
netsh advfirewall firewall add rule name="Block_Steam" program="%exe%" dir=out action=block
echo [成功] 出站规则已添加
) else (
echo [跳过] 出站规则已存在
)

netsh advfirewall firewall show rule name="Block_Steam_In" >nul 2>&1
if errorlevel 1 (
netsh advfirewall firewall add rule name="Block_Steam_In" program="%exe%" dir=in action=block
echo [成功] 入站规则已添加
) else (
echo [跳过] 入站规则已存在
)

echo.
echo 完成!Steam 现已断网
echo.
pause
goto menu


:unblock
cls
echo ========================================
echo 恢复网络 (联网模式)
echo ========================================
echo.

:: 检查管理员权限
net session >nul 2>&1
if %errorlevel% neq 0 (
echo 错误: 需要管理员权限!
echo 请右键选择"以管理员身份运行"
pause
goto menu
)

echo 正在删除防火墙规则...

:: 删除规则
netsh advfirewall firewall delete rule name="Block_Steam" >nul 2>&1
if errorlevel 1 (
echo [信息] 出站规则不存在
) else (
echo [成功] 出站规则已删除
)

netsh advfirewall firewall delete rule name="Block_Steam_In" >nul 2>&1
if errorlevel 1 (
echo [信息] 入站规则不存在
) else (
echo [成功] 入站规则已删除
)

echo.
echo 完成!Steam 现已联网
echo.
pause
goto menu