繁体   English   中英

如何授予对我的 COM+ 应用程序的访问权限?

[英]How do I grant access to my COM+ application?

我创建了一个 COM+ 服务器应用程序,但调用者无法访问它 - 当它尝试从该应用程序实例化 COM object ( CoCreateInstance() ) 时,系统日志中会显示以下内容:

The application-specific permission settings do not grant Local Activation permission for the COM Server application with CLSID {class id of COM object here} and APPID {app id of the COM+ application here} to the user MACHINENAME\administrator SID (SID here) from地址 LocalHost(使用 LRPC)。 可以使用组件服务管理工具修改此安全权限。

调整 COM+ 访问的唯一方法似乎是使用角色,但应用程序未选中“强制访问检查”,因此看起来应该没有限制。 然而 object 不会实例化。

如何允许某个用户访问特定的 COM+ 应用程序,以便他可以从那里实例化对象?

您应该做的第一件事是检查您是否可以在应用程序之外创建此 object。 我在这里使用 vbscript;

dim vvv
set vvv= CreateObject ("CoCreateInstance()")

if isnull(vvv) then
            msgbox "null"
else
            msgbox "not null"
end if

如果您无法创建 object,那么 .dll 可能存在问题,您最好将组件从注册表中擦除并完全重新安装/重新实现它。

如果您可以创建 object,则说明应用程序访问组件时存在问题。 这通常是由于以下原因之一;

  1. 组件安全设置

    • 为了找到问题,您有权取消选中“强制访问检查”。 确保取消选中应用程序(包)级别和组件级别的框。
  2. 用户设置

    • 看看这个链接 除了他们的建议之外,尝试将 IUSR_servername 添加为管理员成员。
  3. 组件服务和注册表不匹配

    • 我们需要确保组件服务中的 CLSID 与注册表匹配。 在组件服务中,查找组件(而不是应用程序)并查看属性。 如果该组件在那里,则它已明确注册。 当您在这里时,我们不妨仔细检查一些设置。 DLL 地址是否有效? 安全、交易和激活设置是否正确? 好的,现在注意常规选项卡中的 CLSID。 Go 进入注册表编辑器并在 HKEY_CLASSES_ROOT 中找到 CLSID(它应该在那里)。 确保 dll 地址和 ProgID 正确。 还要验证键和子键的结构与您的其他组件类似。

如果这些都不起作用,请在注册表中搜索组件的名称并将其清除。 然后重新安装。

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM