我们的COM组件面临一个相当奇怪的问题 。 该组件实现了一个众所周知的界面,并被第三方封闭源代码产品(以下简称产品X)所使用。 产品X通过Windowsregistryconfiguration – 产品X读取registry并查找组件的类ID。
我们的组件是使用ATL在本地C ++中实现的32位进程,我们在64位系统上使用COM +进行注册,以便在代理进程中激活它。
现在,产品X无法使用我们的组件,并在Windows事件日志中跟踪E_ACCESSDENIED ,我们也看到以下错误消息
特定于应用程序的权限设置不会授予用户MACHINENAME administrator SID(此处为SID)的CLSID(此处为COM对象的类ID)和APPID(此处为COM +应用程序的应用程序ID)的COM服务器应用程序的本地激活权限地址LocalHost(使用LRPC)。 可以使用组件服务pipe理工具修改此安全权限。
如何在文本框内放置“X”(清除文本框)?
检索窗口大小没有Windows阴影
无法在Django中运行os.system命令?
如何确保在c ++中同时调用CreateProcess时只创build一个进程?
在系统日志中。
这看起来像一个权限问题。 所以我们在C#中创build了一个“Hello,world”程序,这个new COM组件调用了一个简单的(永不失败)方法:
OurComponent.IoUrComponent组件= new OurComponent.OurcomponentClass(); component.TrivialMethod();
当这个程序运行在与Product X相同的账户时,它可以正常运行 – 组件被实例化,我们甚至可以在COM +控制台中看到“带有加号的绿球”。
所以我们有两个程序在相同的用户帐户下运行在同一台机器上,一个可以实例化一个COM组件,另一个不能。 这可能是什么原因?
大素数在c
与ONBUILD选项(Windows中的Docker工具箱)
在C#中使用Windows窗体创build多个窗体?
Kinect v2 for windows:调整颜色框架在c#
我认为你缺乏应用程序的配置。
所以这两件事情的工作。 1您的应用程序需要编译为“可见”。 2您需要注册com组件(如果尚未注册)
转到开始 – >管理工具 – >组件服务。 展开组件服务,计算机,我的电脑,DCOM配置。 向下滚动并找到应用程序。 右键 – >点击 – >属性,然后选择安全选项卡。 您会在这里看到一些选项 – 第一个块启动和激活权限 – 确保已选择自定义单选按钮,然后单击编辑。 现在,给你正在使用的帐户启动,激活,以及远程启动/激活权限。 重新启动机器(或重新启动服务/应用程序),并希望它会工作。
版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 [email protected] 举报,一经查实,本站将立刻删除。