Windows系统svchost.exe占用5037端口导致adb无法正常运行求助
问题根因
svchost.exe是Windows系统的服务宿主进程,本身不会主动占用端口,占用5037端口的是它所承载的后台系统服务。最常见的触发原因是Windows自带的**Windows Internet Name Service(WINS)**服务默认会绑定5037端口,部分企业域管理服务、第三方安全软件挂载的服务也可能出现该行为。由于这类服务会随系统启动自动运行,因此每次重启后都会重新抢占adb的默认端口。
永久解决方案
两种方案任选其一即可,优先推荐第一种,不会影响系统原生服务运行:
方案1:修改adb默认监听端口(最稳妥)
- 右键「此电脑」→「属性」→「高级系统设置」→「环境变量」,在系统变量区域点击「新建」
- 变量名填写
ANDROID_ADB_SERVER_PORT,变量值填写一个未被占用的高位端口,比如5038,保存所有设置 - 重启Android Studio,或手动杀掉所有adb进程后重新启动adb服务即可,后续adb会默认使用新配置的端口,不会再和5037端口的服务冲突
方案2:禁用占用端口的对应服务
- 先执行命令查询占用5037端口的svchost进程承载的服务列表,将命令中的
<PID>替换为你查到的进程号:
tasklist /svc /fi "imagename eq svchost.exe" | findstr <PID>
- 按下Win+R输入
services.msc打开系统服务管理面板,找到上一步查询到的对应服务 - 如果该服务是非核心系统服务(比如WINS服务,普通个人用户几乎用不到),将其启动类型修改为「禁用」,再点击「停止」即可永久释放5037端口
- 如果是不可禁用的系统核心服务,请回到方案1修改adb端口
注意:不要随意结束未知的svchost进程,多数svchost承载系统核心服务,强制终止可能导致系统蓝屏、功能异常甚至自动重启。
内容的提问来源于stack exchange,提问作者lpetrucci
相关产品推荐
相关产品推荐

