ZEISS Microscopy Installer、ZLMT 及 ZEN 系列软件均因 FlexNet Publisher DLL 崩溃而闪退。本文描述现象、根因及绕过方法。
现象
启动 ZEISS Microscopy Installer 后约 10–30 秒自动闪退。ZLMT、ZEN 2 (blue edition) 同样崩溃。事件查看器记录如下:
Microscopy Installer / ZLMT
应用程序: ZeissMicroscopyInstaller.exe
CoreCLR Version: 8.0.2626.16921
.NET Version: 8.0.26
异常代码: 0xc0000005
错误偏移: 0x00000000003c32ea
出错模块: CommonLicensingLayerCore_libFNP.dll
出错模块版本: 11.16.6.0
ZEN 2 (blue edition)
出错应用程序: ZEN.exe
出错模块: CommonLicensingLayer64_libFNP.dll
版本: 11.13.1.0, 时间戳: 0x5587ef2d (2015 年编译)
异常代码: 0xc0000005
错误偏移: 0x00000000001cb3b1
路径: C:\Program Files\Carl Zeiss\ZEN 2\ZEN 2 (blue edition)\
ZEN 使用的 DLL 文件名略有不同(
CommonLicensingLayer64_libFNP.dll,含64后缀),但同属 FlexNet Publisher 系列,崩溃原因一致。
影响范围
| 软件 | 版本 | 崩溃 DLL | DLL 版本 |
|---|---|---|---|
| ZEISS Microscopy Installer | 1.16.26118.4 | CommonLicensingLayerCore_libFNP.dll | 11.16.6.0 (2020) |
| ZLMT | 1.0.26050.1 | CommonLicensingLayerCore_libFNP.dll | 11.16.6.0 (2020) |
| ZEN 2 (blue edition) | 3.36.26159.61 | CommonLicensingLayer64_libFNP.dll | 11.13.1.0 (2015) |
触发条件
- 使用 FlexNet Publisher 许可的 ZEISS 软件(目前确认 Installer、ZLMT、ZEN 均受影响)
- FlexNet DLL 版本 v11.13.x ~ v11.16.x(2015–2020 年编译)
- 复现环境:Windows 10/11
崩溃时序
以 Microscopy Installer 日志为例,程序启动正常,直到许可检测阶段:
1. FNP activation service 初始化完成
2. 成功连接 Flexera,获取到 0 个许可 feature
3. 检查 HASP 密钥 ...
4. HASP 密钥读取失败 (EmptyScopeResults)
5. No license key found.
→ 随后在 CommonLicensingLayerCore_libFNP.dll 处崩溃
根因
FlexNet Publisher 11.x 系列(2015–2020 年编译)在处理许可状态时发生 0xc0000005 访问违规。此问题无法通过兼容模式、.NET 运行时切换或清理配置数据解决。
崩溃原因尚未完全确定,可能是 DLL 内部 bug 被特定系统环境触发。
绕过方法
重命名 DLL
将各软件对应的 FNP DLL 重命名,使其跳过 FlexNet 许可路径。所有命令需以管理员身份运行。
Microscopy Installer
Rename-Item `
"C:\Program Files\Carl Zeiss\MicroscopyInstaller\CommonLicensingLayerCore_libFNP.dll" `
"CommonLicensingLayerCore_libFNP.dll.disabled" `
-Force
ZLMT
Rename-Item `
"C:\Program Files\Carl Zeiss\ZEISS License Management Tool\runtimes\win-x64\native\CommonLicensingLayerCore_libFNP.dll" `
"CommonLicensingLayerCore_libFNP.dll.disabled" `
-Force
ZEN 2 (blue edition)
Rename-Item `
"C:\Program Files\Carl Zeiss\ZEN 2\ZEN 2 (blue edition)\CommonLicensingLayer64_libFNP.dll" `
"CommonLicensingLayer64_libFNP.dll.disabled" `
-Force
注意:重命名后 DLL 缺失,ZEISS 软件的自检/修复机制可能自动将其还原。如果重命名后过一段时间又崩溃,说明已被恢复,改用下方的"空文件占位 + 权限锁定"方案。
空文件占位 + 权限锁定
用空文件保持原名占位(骗过自检),再通过 NTFS 权限禁止覆盖。以 Microscopy Installer 为例,其他软件替换路径即可:
# 以管理员身份运行
$dll = "C:\Program Files\Carl Zeiss\MicroscopyInstaller\CommonLicensingLayerCore_libFNP.dll"
# 1. 备份真 DLL
Copy-Item $dll "$dll.real" -Force
# 2. 替换为空文件(0 字节),设只读
Remove-Item $dll -Force
New-Item $dll -ItemType File -Force | Out-Null
Set-ItemProperty $dll -Name IsReadOnly -Value $true
# 3. 拒绝 Everyone 和 SYSTEM 的删除与写入
icacls $dll /deny "Everyone:(D,WA)" /q
icacls $dll /deny "SYSTEM:(D,WA)" /q
空文件不是合法 DLL,加载时会触发与重命名相同的异常捕获路径;同时文件存在、且 ACL 禁止删除覆盖,自检机制无法替换它。
原理
- 程序加载不到 FNP DLL(或被空文件拦截) → 抛出
ActivationLibraryException - .NET / 原生托管代码正常捕获该异常,记录日志后优雅回退
- 程序继续走 Sentinel HASP 检测路径(无许可也不崩溃)
- GUI 正常显示
恢复许可功能
根据之前使用的方法选择对应恢复方式。
重命名方案的恢复(将 .disabled 后缀去掉):
# 以 Microscopy Installer 为例
Rename-Item `
"C:\Program Files\Carl Zeiss\MicroscopyInstaller\CommonLicensingLayerCore_libFNP.dll.disabled" `
"CommonLicensingLayerCore_libFNP.dll" `
-Force
空文件 + ACL 方案的恢复(解除权限锁定后还原真 DLL):
$dll = "C:\Program Files\Carl Zeiss\MicroscopyInstaller\CommonLicensingLayerCore_libFNP.dll"
# 解除 ACL 并取消只读
icacls $dll /remove:d "Everyone" /q
icacls $dll /remove:d "SYSTEM" /q
Set-ItemProperty $dll -Name IsReadOnly -Value $false
# 还原备份的真 DLL
Copy-Item "$dll.real" $dll -Force
补充说明
- 绕过 FlexNet 后,只有 Sentinel HASP 加密狗许可可以正常使用;FlexNet 软许可在对应 DLL 恢复前无法激活
- 建议将此问题反馈给 ZEISS 技术支持,等待官方更新 FNP 组件