WinAppDriver启动报错4723端口被System进程占用如何解决?
端口占用原因说明
- PID为4的System进程占用端口本质是Windows内核级HTTP服务组件
HTTP.sys预留/占用了端口,HTTP.sys会代理所有运行在内核层的HTTP服务请求,对应的进程都会统一显示为System进程,不一定是杀毒软件导致,常见的触发场景包括:- IIS服务、Windows远程桌面服务、Hyper-V服务、Windows更新相关服务启用
- 杀毒软件的Web防护、内核级网络过滤模块启用
- 其他依赖内核HTTP服务的第三方软件运行
解决方案
方案1:更换WinAppDriver启动端口(最快捷)
无需处理现有端口占用,直接修改启动和业务代码即可:
- 启动WinAppDriver时指定自定义端口,示例代码:
var p = new Process(); p.StartInfo.FileName = @"C:\Program Files (x86)\Windows Application Driver\WinAppDriver.exe"; // 追加参数指定端口,可替换为任意未被占用的端口,示例用4724 p.StartInfo.Arguments = "4724"; p.Start();
- 同步修改业务代码中的服务地址:
var appPath = @"ApplicationPath"; // 端口和启动参数保持一致 var windowsApplicationDriverUrl = "http://localhost:4724"; var appiumOptions = new AppiumOptions(); appiumOptions.AddAdditionalCapability("app", appPath); session = new WindowsDriver<WindowsElement>(new Uri(windowsApplicationDriverUrl), appiumOptions);
方案2:释放4723端口占用(必须使用默认端口时采用)
- 首先查看HTTP.sys预留端口列表,运行命令:
netsh int ipv4 show excludedportrange protocol=tcp
如果4723在预留列表内,以管理员权限运行以下命令解除预留:netsh int ipv4 add excludedportrange protocol=tcp startport=4723 numberofports=1 store=persistent - 排查占用端口的服务:
- 暂时停止IIS、Hyper-V、远程桌面等系统服务后重试
- 暂时关闭杀毒软件的Web防护、网络过滤功能后重试,验证是否为杀毒软件导致的占用
- 以上操作完成后重启电脑即可生效。
方案3:重置HTTP.sys服务(极端情况使用)
如果以上操作都无法释放端口,以管理员权限运行以下命令重置HTTP服务:
net stop http net start http
操作前请保存正在运行的依赖HTTP服务的业务数据,避免中断。
内容的提问来源于stack exchange,提问作者Demodave
相关产品推荐
相关产品推荐

