最近维护一批依赖 Microsoft.Jet.OLEDB.4.0 + 无密码 MDB 的 90 年代/2000 年初老软件,在 Win11 25H2 遇到诡异问题,请教各位:
核心现象
- 未打某次 Windows 更新前,老软件(如 MDBPlus.exe )能正常连接无密码 MDB ;
- 更新后,所有依赖 Jet OLEDB 4.0 的老软件均报
Not a valid password,但 32 位 PowerShell 手动加 Jet OLEDB:Database Password=; 声明空密码,能正常访问 MDB ; - 回滚更新后恢复,重新更新问题复现。
已尝试的修复(对老软件无效)
- 重新注册 SysWOW64 下 Jet 相关 DLL ( msjet40.dll/msjetoledb40.dll 等);
- 补全 Wow6432Node 下 Jet 的 CLSID/ProgID 注册表项,权限配置正常;
- 修改 Jet 4.0 引擎注册表,禁用加密验证( Encryption=0 );
- 老软件以 Win7 兼容模式+管理员权限运行。
关键疑问
- 微软在 Win11 25H2 更新中,是否故意调整了 Jet OLEDB 4.0 的密码验证逻辑(比如强制显式声明空密码)?
- 这种调整是推动迁移 ACE 驱动,还是兼容性疏漏?有无官方说明?
- 对无法改连接字符串的老软件,除回滚更新外,还有底层修复方案吗?
Jet OLEDB 4.0 已是 20 多年老组件,实在费解微软为何改动验证逻辑,求大佬解惑!