You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

Windows系统下如何禁止程序访问localhost(内网及互联网)

阻止Windows指定程序访问localhost的操作方案

默认Windows防火墙不会对本地回环地址(127.0.0.0/8段,对应localhost)的流量执行常规出入站规则,这是此前配置防火墙后仅拦截公网、本地访问依然生效的核心原因。

方案1:针对单个程序配置精准拦截规则(推荐,随开随关)

直接使用管理员权限打开PowerShell执行对应命令即可:

  • 添加拦截规则:将<程序绝对路径>替换为目标程序的exe完整路径(例如C:\apps\test.exe),规则名可自定义
New-NetFirewallRule -DisplayName "Block TestApp access localhost" -Direction Outbound -Program "<程序绝对路径>" -Action Block -RemoteAddress 127.0.0.0/8 -Enabled True
  • 测试完成后处理规则:
    • 临时关闭规则:Set-NetFirewallRule -DisplayName "Block TestApp access localhost" -Enabled False
    • 完全删除规则:Remove-NetFirewallRule -DisplayName "Block TestApp access localhost"

方案2:模拟随机断网测试场景

如果需要随机切换拦截/放行状态模拟真实断网,可以使用以下PowerShell脚本,自行替换参数即可:

# 替换为你创建的防火墙规则名
$ruleName = "Block TestApp access localhost"
# 替换为随机切换的最小、最大间隔(单位:秒)
$minInterval = 10
$maxInterval = 60

while ($true) {
    $currentStatus = (Get-NetFirewallRule -DisplayName $ruleName).Enabled
    $newStatus = if ($currentStatus -eq "True") { "False" } else { "True" }
    Set-NetFirewallRule -DisplayName $ruleName -Enabled $newStatus
    Write-Host "当前拦截状态:$newStatus"
    $sleepTime = Get-Random -Minimum $minInterval -Maximum $maxInterval
    Start-Sleep -Seconds $sleepTime
}

按Ctrl+C即可停止脚本,测试结束后记得手动关闭或删除规则,避免影响正常使用。

方案3:全局临时拦截所有程序访问localhost

不需要针对单个程序时可以直接修改hosts文件实现:

  1. 用管理员权限打开记事本,打开路径C:\Windows\System32\drivers\etc\hosts的文件
  2. 在文件末尾添加一行:0.0.0.0 localhost
  3. 保存后执行ipconfig /flushdns刷新DNS缓存即可生效
  4. 测试完成后删除添加的行,再次刷新DNS缓存即可恢复正常

内容的提问来源于stack exchange,提问作者Khalid Hex

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.10.03 07:09:00