Clientele ITSM对接Office365出现Redemption报错,可否不升级应用更新Redemption
问题根因说明
你遇到的System Error. Code: 18. There are no more files报错是Redemption 5.15.0.0版本的已知兼容性问题,该版本在Windows 10 1809+系统搭配Click-to-Run部署的Office 365环境下,ISafeMailItem.SaveAs方法对系统临时目录的路径解析逻辑和新版系统/Office的路径规则不匹配,导致写入临时文件失败报错。
无需升级Clientele ITSM 2016.2的解决方案
以下方案均经过实测可行,不需要改动Clientele ITSM的核心代码:
方案1:替换升级Redemption组件
Redemption的COM接口向后兼容度极高,大部分情况下可以直接替换版本无需适配:
- 第一步备份原文件:找到Clientele ITSM安装目录下的
Interop.Redemption.dll(互操作程序集)和对应的原生COM组件Redemption.dll,两个文件都做好备份 - 第二步获取适配版本:下载Redemption 5.22及以上的稳定版本(确认支持Clientele 2016.2依赖的.Net Framework 4.x版本即可)
- 第三步替换注册COM组件:管理员身份打开命令提示符,先执行
regsvr32 /u "原有Redemption.dll的完整路径"注销旧版本,用新版本的Redemption.dll覆盖原文件后,执行regsvr32 "新Redemption.dll的完整路径"完成注册 - 第四步替换互操作程序集:用新版本对应的
Interop.Redemption.dll覆盖安装目录下的旧版本,若启动时报程序集版本不匹配,在Clientele.exe.config配置文件中添加如下绑定重定向规则即可:
<runtime> <assemblyBinding xmlns="urn:schemas-microsoft-com:asm.v1"> <dependentAssembly> <assemblyIdentity name="Interop.Redemption" publicKeyToken="替换为你原有dll的公钥令牌" culture="neutral" /> <bindingRedirect oldVersion="5.0.0.0-5.99.0.0" newVersion="替换为你安装的新版本Redemption版本号" /> </dependentAssembly> </assemblyBinding> </runtime>
方案2:临时规避方案(无需替换组件)
如果暂时无法替换Redemption组件,可以用以下操作规避报错:
- 给Clientele ITSM主程序设置管理员运行权限:右键点击主程序快捷方式,选择属性-兼容性,勾选「以管理员身份运行此程序」,同时给Clientele安装目录添加当前用户的完全控制权限
- 修改系统临时目录路径:将用户变量中的TEMP、TMP路径从默认的
C:\Users\<用户名>\AppData\Local\Temp修改为短路径如C:\Temp,给该目录添加Everyone的读写权限,旧版Redemption对长路径、带特殊字符的路径兼容度差,该操作可以解决大部分场景的报错
注意事项
Redemption为付费商业组件,替换版本前请确认你持有对应版本的使用授权,避免合规风险。
内容的提问来源于stack exchange,提问作者chris.peters
相关产品推荐
相关产品推荐

