You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

CoCreateInstance()注册表查找位置确认及Word应用CLSID路径验证

关于CoCreateInstance注册表查找路径及Word CLSID的确认

CoCreateInstance的注册表查找位置

  • 首先定位到HKEY_CLASSES_ROOT\CLSID\{目标CLSID}节点,获取组件的基础注册信息
  • 根据调用时指定的CLSCTX参数,查找对应子项:
    • 若指定CLSCTX_INPROC_SERVER,会读取InprocServer32子项,获取进程内组件的DLL路径
    • 若指定CLSCTX_LOCAL_SERVER,会读取LocalServer32子项,获取本地服务器程序的可执行文件路径
  • 64位系统中,32位应用会自动重定向到HKEY_CLASSES_ROOT\Wow6432Node\CLSID\{目标CLSID}下的对应子项,64位应用则读取原生节点

Word应用CLSID路径确认

你提到的{000209FF-0000-0000-C000-000000000046}确实是Microsoft Word Application的CLSID,对应的注册表路径Computer\HKEY_CLASSES_ROOT\CLSID\{000209FF-0000-0000-C000-000000000046}\LocalServer32完全正确,该子项的默认值即为Word主程序(如WINWORD.EXE)的完整路径,用于启动Word本地服务器实例。

Delphi调用链说明

你的Delphi代码调用链展开后如下:

  1. 初始调用:
CoWordApplication.Create;
  1. 触发内部调用:
CreateComObject(CLASS_WordApplication) as _Application;
  1. 最终执行核心API:
OleCheck(CoCreateInstance(ClassID, nil, CLSCTX_INPROC_SERVER or
        CLSCTX_LOCAL_SERVER, IUnknown, Result));

这里CLSCTX_INPROC_SERVER or CLSCTX_LOCAL_SERVER表示系统会优先尝试进程内加载Word组件,若失败则启动独立的Word本地服务器进程,对应注册表中的InprocServer32和LocalServer32两个子项。

内容的提问来源于stack exchange,提问作者Bret Bordwell

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.08.20 15:39:19