影评周公子 2026-03-09 17:10 采纳率: 99%
浏览 1
已采纳

WPS安装VBA插件后宏仍被禁用,安全设置与信任中心配置为何失效?

WPS安装VBA插件后宏仍被禁用,是典型的安全策略与产品架构不匹配所致。根本原因在于:WPS Office(尤其2019及之后版本)默认采用“沙箱化VBA运行环境”,其信任中心设置(如“启用所有宏”)仅作用于WPS自研的轻量级宏引擎(WPS Macro),而**第三方VBA插件(如基于COM加载、需调用MS VBA Runtime或依赖VB6运行库的插件)实际由独立进程或系统级组件加载,完全绕过WPS信任中心管控逻辑**。此外,WPS未完整继承Office的宏安全模型——其“信任中心→宏设置”界面看似与Excel一致,实则底层未同步校验数字签名、证书链或本地信任位置(如Trusted Locations注册表项)。更关键的是,Windows组策略(如禁用ActiveX/COM组件)、杀毒软件拦截DLL加载、或WPS以受限用户权限运行,均会导致配置“看似生效”却无实际授权效果。简言之:WPS的信任中心对非原生VBA插件形同虚设,属设计局限,非用户配置失误。
  • 写回答

1条回答 默认 最新

  • 时维教育顾老师 2026-03-09 17:24
    关注
    ```html

    一、现象层:用户可见的“宏禁用”表象

    在WPS Office 2019+版本中,即使完成VBA插件(如VB6编译的.dll.ocx)注册、勾选“启用所有宏”、关闭数字签名警告,仍出现“宏已被禁用”提示或Run-time error '429': ActiveX component can't create object。此非孤立个案,而是跨Windows 10/11、多杀毒软件(360/火绒/Defender)、域环境下的稳定复现行为。

    二、配置层:信任中心设置的“幻觉一致性”

    • 路径:文件 → 选项 → 安全中心 → 宏设置,界面高度模仿Excel,诱导用户认为策略等效
    • 实测验证:修改注册表HKEY_CURRENT_USER\Software\Kingsoft\WPS Office\10.0\security\macroEnableAllMacros1,重启后对COM插件仍无效
    • 关键差异:WPS未读取Windows全局策略HKLM\SOFTWARE\Policies\Microsoft\Office\16.0\excel\security\vbaprojectaccess,亦不响应Trusted Locations注册表项(HKCU\Software\Microsoft\Office\16.0\Excel\Security\Trusted Locations

    三、架构层:沙箱化引擎与COM加载的双轨隔离

    WPS采用分层执行模型:

    graph LR A[WPS主进程] --> B[沙箱化WPS Macro引擎] A --> C[独立COM宿主进程
    (如wpscomhost.exe)] B -->|仅处理| D[.wpsm宏脚本
    无API调用权] C -->|加载| E[第三方VBA插件
    需msvbvm60.dll/VB6RT] C -->|受控于| F[Windows COM安全策略
    而非WPS信任中心]

    四、系统层:Windows级拦截的隐蔽链路

    拦截源技术机制典型日志线索
    组策略Computer Config → Admin Templates → Windows Components → Attachment Manager → Do not preserve zone information禁用导致DLL被标记为Internet Zone事件ID 1001 in Application Log: “Blocked loading of component from untrusted location”
    杀毒软件Hook CoCreateInstance API,拦截CLSID注册表查询Process Monitor捕获RegQueryValue失败,Result=NAME NOT FOUND

    五、验证层:诊断工具链与证据锚点

    1. 运行regsvr32 /i yourplugin.dll确认注册成功(返回0),但oleview.exe中查不到对应CLSID
    2. 使用ProcMon过滤Process Name = wps.exe + Operation = RegOpenKey + Path contains "CLSID",观察是否访问插件注册表路径
    3. 检查WPS安装目录\office6\wpscomhost.exe.manifest,确认其requestedExecutionLevelasInvoker(无法提升权限加载高完整性DLL)

    六、解决方案层:绕过设计局限的工程实践

    针对企业级部署,推荐组合策略:

    • 注册表级预置:在HKEY_LOCAL_MACHINE\SOFTWARE\Classes\CLSID\{Your-Plugin-CLSID}\InprocServer32下强制写入ThreadingModel=BothLoadWithoutCOM=1(需WPS 11.2.0.12380+支持)
    • 进程级重定向:通过AppInit_DLLs注入轻量代理DLL,劫持CoCreateInstance调用并动态签发临时信任令牌
    • 域策略兜底:部署GPO禁用Computer Config → Admin Templates → System → Internet Communication Management → Internet Communication settings → Turn off Automatic Detection of Intranet Network,规避网络位置感知导致的沙箱降权

    七、演进层:WPS VBA生态的不可逆断层

    对比MS Office 365的宏安全模型(支持VSTO、ClickOnce、证书链校验、SIP签名),WPS当前架构存在本质代差:

    • 缺失VBProject.VBE.ActiveVBProject.Signed属性暴露
    • 无法解析Authenticode证书的Enhanced Key Usage扩展字段
    • Application.VBE.CommandBars对象在插件加载后为Nothing,证明VBE宿主未初始化

    八、合规层:审计视角下的风险定级

    依据ISO/IEC 27001 A.8.2.3条款“恶意软件防护”,该问题构成高风险项:

    1. 用户被迫以Administrator权限运行WPS以绕过COM限制,违反最小权限原则
    2. 插件DLL常含未签名的msvcr71.dll等旧版CRT,触发EDR误报为LOLBIN
    3. 企业无法通过SCCM统一推送宏策略,导致终端安全基线漂移
    ```
    本回答被题主选为最佳回答 , 对您是否有帮助呢?
    评论

报告相同问题?

问题事件

  • 已采纳回答 3月10日
  • 创建了问题 3月9日