我的问题是,当您处理 MSIX 打包的应用程序时,访问 COM 对象是否有某些限制。
我使用 Visual Studio 项目模板创建了一个空白的 WinUI 3 C++ 项目。在项目中,我创建了一个传统的 COM 类,它在运行时使用 CoRegisterClassObject
注册。我不会以其他方式在注册表中注册该对象。这是一个单例,应该只有在 .exe 已经启动时才可以访问。
现在,当我修改要解包的项目,并启动 .exe 时,我可以通过调用 CoCreateInstance
从另一个进程访问 singeton 类。一切都按设计工作。
但是当我将 MSIX 项目改回 packaged 设置时,从未打包的进程调用 CoCreateInstance
现在失败,代码为 REGDB_E_CLASSNOTREG
.
这就像在存在未提升/提升的不匹配时尝试连接到 COM 对象。同样的错误。
那么未打包的进程是否无法访问在 MSIX 打包的应用程序中使用 CoRegisterClassObject
注册的 COM 对象?有解决方法或什么吗?提前致谢。