Windows Common Bugs
导言
主要是记录Windows使用时遇到的一些问题和解决方案。
预留端口冲突¶
- 系统动态端口范围(Ephemeral Ports):Windows 会为出站连接自动分配临时端口,默认范围是 49152-65535
- Hyper-V / WinNAT / WSL / Docker:启用这些虚拟化功能后,系统会随机保留部分端口用于 NAT 服务,即使 netstat 查不到占用,也无法绑定
- Administered Port Exclusions:通过 excludedportrange 机制,某些端口被系统标记为"禁止用户态程序使用"
# 查看 TCP 保留端口范围(管理员权限运行)
(base) PS D:\PowerShell> netsh int ipv4 show excludedportrange protocol=tcp
Protocol tcp Port Exclusion Ranges
Start Port End Port
---------- --------
3883 3982
3983 4082
4183 4282
4283 4382
4383 4482
4483 4582
4583 4682
4683 4782
4783 4882
4883 4982
5041 5140
5479 5578
8281 8380
50000 50059 *
* - Administered port exclusions.
应对
# 1. 先停止 WinNAT 服务(释放被占端口)
net stop winnat
# 2. 添加排除范围(保留 1080~1089 共10个端口)
# netsh int ipv4 add excludedportrange protocol=tcp startport=1080 numberofports=10
# 删除之前添加的保留范围
netsh int ipv4 del excludedportrange protocol=tcp startport=5050 numberofports=10
netsh int ipv4 del excludedportrange protocol=tcp startport=8233 numberofports=10
# 3. 重启 WinNAT 服务
net start winnat
删除无权限文件¶
在 Windows 中,如果删除文件时提示权限不足,可以通过以管理员身份运行命令提示符并使用命令行工具强制删除文件。以下是具体步骤:
- 以管理员身份运行命令提示符:
- 按
Win + S,搜索“cmd”。 -
右键点击“命令提示符”,选择“以管理员身份运行”。
-
以管理员身份运行 PowerShell:
- 按
Win + S,搜索“PowerShell”。 -
右键点击“Windows PowerShell”,选择“以管理员身份运行”。
-
获取文件/文件夹的所有权:
-
输入以下命令:
/f:指定文件或文件夹路径。/r:递归应用于文件夹中的所有文件。/d y:默认同意所有权更改。
-
修改权限:
-
输入以下命令:
/grant administrators:F:授予管理员完全控制权限。/t:递归应用于所有子文件和文件夹。
-
删除文件或文件夹:
- 使用
del或rmdir命令删除。
Bug¶
操作无法完成,因为其中的文件夹已在另一程序中打开,请关闭该文件或文件夹,然后重试。
打开资源监视器,在关联的句柄里搜索文件/文件夹的名称。结束相关占用进程即可。1
Win11有个离谱的bug,有一种占用是Thumbs.db的文件,是系统为了实现文件预览而自动生成的文件。应该建立一个白名单,将这些自动结束,并排除出占用判断逻辑。