ZEISS Microscopy Installer、ZLMT 及 ZEN 系列软件均因 FlexNet Publisher DLL 崩溃而闪退

47 阅读3分钟

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 系列,崩溃原因一致。

影响范围

软件版本崩溃 DLLDLL 版本
ZEISS Microscopy Installer1.16.26118.4CommonLicensingLayerCore_libFNP.dll11.16.6.0 (2020)
ZLMT1.0.26050.1CommonLicensingLayerCore_libFNP.dll11.16.6.0 (2020)
ZEN 2 (blue edition)3.36.26159.61CommonLicensingLayer64_libFNP.dll11.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 组件