最近,在我的开发机器中,一些 TCP 端口开始对应用程序不可用,并出现错误 10013。
在互联网上搜索后,我认为这种解释最有可能:这些端口在管理上被某些应用程序排除,很可能被保留供自己使用。
事实上,我可以使用命令查看排除端口的范围
netsh int ipv4 show excludedportrange protocol=tcp
Run Code Online (Sandbox Code Playgroud)
我还可以尝试删除一些排除的范围,但大多数 netsh 拒绝这样做,显示错误“访问被拒绝”(即使在管理 shell 内)或“未找到元素”。
所以,现在我想尝试另一种方法:找出哪些应用程序排除了这些 TCP 端口范围。
虽然这是一台公司机器,但它不属于 Windows 域(而且现在确实在我家里,因为我因为疫情而在家工作)。
那么,这就是问题:如何找到哪些应用程序正在保留这些 TCP 端口范围?
更新
Stackoverflow 中有很多关于此问题的问题(我认为这不是解决这个问题的合适地方,但无论如何)。
我在某个地方找到了对我有用的解决方案:
net start winnat
net stop winnat
Run Code Online (Sandbox Code Playgroud)
它立即生效,甚至不需要重新启动。
Windows 10 专业版 20H2 19042.804 Windows 功能体验包 120.2212.551.0
编辑。
刚才 netsh 的输出:
$ netsh int ipv4 show excludedportrange tcp
Protocol tcp Port Exclusion Ranges
Start Port End Port
---------- --------
20092 20191
20192 20291
20292 20391
20392 20491
20492 20591
20592 …Run Code Online (Sandbox Code Playgroud) 我习惯使用快捷键 Alt+向下箭头和 Alt+向上箭头来导航差异。现在只需按箭头键即可使 Winmerge 跳转到下一个差异!
此外,与 Alt+向左箭头和仅向左箭头的行为相同。
那么,有人知道发生了什么事吗?
是否有快捷键的配置?