c++ - 无法在 .net 中创建 com 对象实例

标签 c++ .net comobject

当我尝试在 .net 中为没有管理员权限的用户创建 com 对象时出现以下错误。

CLSID 为 {6CA9DEBE-BA91-4E56-9CD3-D40FE0755204} 的组件的 COM 类工厂因以下错误而失败无法检索:800704ec 该程序被组策略阻止。申请让您的系统管理员获取更多信息。 (HRESULT 异常:0x800704EC)。

代码如下所示:

动态对象=空; 尝试 { 尝试 { var ComType = Type.GetTypeFromProgID("XenReports.XenReportsX"); obj = Activator.CreateInstance(ComType); } catch (异常) { 抛出新的异常(TextMessageProvider.GetText(ResourceKeys.XenReportErrorMessage));

如果有人遇到过这个问题,请告诉我。 Com 对象用于 C++ exe。

最佳答案

正如错误所说,问题出在您的组策略设置上。根据当前组策略,您尝试与其一起创建 COM 对象的用户没有足够的权限来进行任何此类创建。

您可以将此用户添加到 native 的“admin”组中,然后尝试。

如果您尝试通过网络访问对象,那么您还需要进行适当的 DCOM 设置。运行“dcomcnfg”,然后运行“组件服务”->“我的电脑”->“DCOM 配置”。现在选择组件并右键单击以更改其属性,例如“启动和激活权限”以及允许哪个用户启动它等。

关于c++ - 无法在 .net 中创建 com 对象实例,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/28871311/

相关文章:

c# - 并发读写 NamePipeClientStream

c# - 何时正确释放 Outlook COM 对象?

visual-studio-2010 - VS2010 不会显示项目属性 ("underlying RCW")?

c++ - 阿姆斯特朗号码的代码不起作用

c++ - 我如何在 Windows 上的 C++ 中根据文件的修改时间读取目录中的文件

c# - 根据枚举名称将字符串转换为枚举

c# - Avalondock 如何设置 LayoutDocument 的制表符宽度

c++ - 指向 D3D11device vtable 的正确指针

c++ - UNICODE_STRING 到 wchar_t* null 终止

c++ - 将世界保持在视口(viewport)范围内