Windows Server 2016下ChromeDriver95沙箱缓存访问失败及进程残留问题
Chrome 95.X版本Windows Server 2016环境ChromeDriver异常问题解答
首先明确:该问题不是单纯的文件夹权限配置问题,本质是Chrome 95及以上版本升级的沙箱机制和Windows Server 2016的默认系统权限配置不兼容导致的,仅给缓存目录加普通读写权限无法解决全部异常。
问题根因
报错提示中的
The specified procedure could not be found已经说明不是权限不足,而是沙箱调用的系统API在当前Windows Server 2016的运行上下文下不存在对应实现,仅Windows 10及以上桌面系统默认支持该沙箱API,因此本地Windows 10环境运行无异常。同时沙箱初始化失败会导致ChromeDriver和浏览器的通信链路异常,调用Driver.Quit()时驱动无法正常向浏览器发送退出指令,最终出现进程残留。
解决方案
方案一:调整Chrome启动参数(最便捷,优先推荐)
初始化ChromeDriver时给ChromeOptions添加以下启动参数即可直接解决两类异常:
- 添加
--no-sandbox参数,直接绕过沙箱校验,适配Server环境的无桌面上下文运行场景 - 额外添加
--disable-dev-shm-usage、--disable-extensions参数,减少不必要的进程依赖,进一步降低残留概率 - 可额外添加
--temp-profile参数,让Chrome每次启动使用独立临时配置文件,避免和历史缓存目录产生冲突
方案二:保留沙箱的权限配置方案(适合对运行安全要求高,不能禁用沙箱的场景)
如果不允许禁用沙箱,需要完成两步系统权限配置:
- 给运行ChromeDriver的服务账号授予
C:\Users\XXXX\AppData\Local\Temp目录的完全控制权限,开启子文件夹、子文件的权限继承 - 打开本地安全策略,依次进入「本地策略」->「用户权限分配」,给对应账号添加「创建全局对象」的权限,配置完成后重启服务器生效,该权限是Chrome沙箱创建临时缓存对象的必要系统权限,Windows Server 2016默认不给服务账号开放该权限
进程残留兜底处理
如果配置完成后仍偶发ChromeDriver进程残留,可以在脚本执行结束后调用系统命令批量清理:
- Windows环境执行命令:
taskkill /f /im chromedriver.exe /t,强制关闭所有ChromeDriver进程及关联的子进程
内容的提问来源于stack exchange,提问作者user423574
相关产品推荐
相关产品推荐

