我正在尝试将我们公司的 Office 2019x86 升级到 Microsoft 365 x86。我们目前停留在 32 位,因为我们的电子控制文档流程目前具有使用 32 位 DLL 的 VBA 宏。这些 DLL 用于 VBA 宏中,以将新数据拉入 DOC 文件并确保每次打开时其中的所有内容都是准确的。
所有这些在 Office 2019 上都运行良好。下载这些文档时,它们会被打开并标记为受保护,因为在文件属性上被标记为只读。使用 Office 2019,这不会阻止宏运行。使用 M365,这些文档无法运行宏,因为它们被标记为仅查看。我尝试推出强制受信任位置的 GPO 并信任正在运行的宏,但仍然失败。我从 VBA 宏中得到的错误如下。
Run-time error '6124': You are not allowed to edit this selection because it is protected.
我已经找到了一个解决方法,即删除 中的所有注册表项'HKEY_CURRENT_USER\Software\Microsoft\Office'
,然后重新启动。使用此方法可以暂时实现预期的行为,但一段时间后问题又会再次出现。
另一种解决方法是进入文件属性并取消选中只读。这不是我们最终用户的选项,但对于管理员来说,在测试时是可行的。
还有哪些可能的解决方案可以尝试解决此问题或导致此行为的确切注册表项/值?
答案1
作为一种解决方法,需要测试一些东西:更改注册表项的所有权 HKEY_CURRENT_USER\Software\Microsoft\Office
到 TrustedInstaller 并删除更改/写入它的权限,以使 MS Office 不太可能干扰它。注意:在进行更改之前,请将密钥导出到 .reg 文件,以便于恢复。之后,测试再次导出到 .reg 是否可以更改另一台 PC 上的所有权。
然而,所有权变更有一些明显的缺点。
- 它将使未来的更新办公室更加困难。
- 办公室将无法保存任何其他对该键的更改。尝试缩小特定子密钥需要保护的,并将所有权仅更改为该。
- 如果不能使用 .reg 文件来完成,将其部署到多台机器可能会很困难。
- 保留旧的 32 位 DLL 可能会存在安全问题。
当然,更好的解决方案是联系原始文档合规性应用程序的供应商,并获得与 MS 较新版本兼容的版本办公室。
[顺便问一下,你有没有测试过其他办公室, 例如自由办公室,以便与现有宏兼容?由于在企业环境中更改应用程序套件可能不切实际,因此这可以满足好奇心,并可能激励软件供应商更新 DLL。