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

.NET Framework COM对象在HKCU注册且UAC关闭时CreateObject调用失败的根因咨询

.NET Framework COM对象在HKCU注册且UAC关闭时CreateObject调用失败的根因咨询

各位好,我碰到了一个非常特定场景下的COM组件调用问题,折腾了挺久没摸透根因,想请教下社区里的大佬们。

先明确下这个问题的触发前提:只有当UAC关闭时才会出现,比如使用Windows Server系统里的内置管理员账号的情况。

复现步骤

  • 用.NET Framework 4.8创建一个对外暴露COM接口的DLL
  • 把这个DLL的COM注册信息写到HKEY_CURRENT_USER(也就是HKCU\SOFTWARE\Classes\CLSID这类常规COM注册路径),而非HKEY_LOCAL_MACHINE
  • 通过VBA或者VBScript调用CreateObject(...)来访问这个COM组件

预期与实际行为

  • 预期:组件能被正常调用成功
  • 实际:大部分场景下都能正常工作,但如果当前用户是Windows Server的内置管理员且UAC关闭,调用CreateObject就会抛出错误:

The system cannot find the file specified.

目前查到的有限线索

我翻了大量资料都没找到这个问题的官方文档,只在一个GitHub线程里看到微软员工的一段隐晦评论,提到.NET Framework在处理HKCU下的COM注册时存在安全相关的问题,但对方明确表示不能披露具体细节。

我已经整理出了几个可用的 workaround 并写在了对应的回答里,不过每个方案都有各自的局限性。现在最让我好奇的是这个问题的根因到底是什么,如果各位大佬有相关的经验或者内部信息,欢迎分享你的见解!

内容来源于stack exchange

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.04.08 07:29:50