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

C#封装的32位COM EXE为何在SysWOW64目录查找配置文件?

COM组件工作目录差异的原因分析

核心差异根源:COM进程的启动方式与工作目录继承逻辑

  • 旧Delphi应用#2的调用逻辑:Delphi应用直接调用COM组件时,若组件是同目录部署的EXE类型COM服务器,Delphi的COM激活逻辑会以自身的工作目录(即组件的安装目录)作为启动COM进程的工作目录,或者组件进程直接继承了宿主的工作目录,因此组件会到安装目录查找配置文件。
  • C#控制台应用的调用逻辑:.NET通过互操作程序集激活进程外COM服务器时,默认不会显式指定COM进程的工作目录。Windows启动32位EXE类型的COM服务器时,若未指定工作目录,会默认使用C:\Windows\SysWow64作为该进程的初始工作目录——这是64位系统下32位进程对应的系统目录,因此组件会在此路径下查找配置文件。

关键细节补充

#1是EXE格式的进程外COM服务器,这类组件的工作目录完全由启动它的逻辑决定:

  • Delphi#2调用时,要么显式指定了组件EXE的启动目录,要么组件注册信息中包含了工作目录配置,Delphi的COM调用模块遵循了这个配置;
  • .NET互操作激活进程外COM时,默认仅通过CLSID查找组件路径,启动时未传递工作目录参数,导致Windows采用系统默认的SysWow64作为组件进程的工作目录。

内容的提问来源于stack exchange,提问作者Sean Anderson

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.07.02 22:31:03