我创建了一个COM +服务器应用程序而调用者无法访问它 - 当它尝试从该应用程序实例化COM对象(CoCreateInstance()
)时,系统日志中会出现以下内容:
特定于应用程序的权限设置不会为具有CLSID {此处为COM对象的类ID}和APPID {此处为COM +应用程序的应用程序ID}的COM服务器应用程序授予用户MACHINENAME \ administrator SID(SID)的本地激活权限这里)来自地址LocalHost(使用LRPC)。可以使用组件服务管理工具修改此安全权限。
调整COM +访问的唯一方法似乎是使用roles,但应用程序已“未执行访问检查”,因此看起来应该没有限制。然而,该对象不会实例化。
如何允许某个用户访问特定的COM +应用程序,以便他可以从那里实例化对象?
答案 0 :(得分:1)
您应该做的第一件事是检查是否可以在应用程序之外创建此对象。我在这里使用vbscript;
dim vvv
set vvv= CreateObject ("CoCreateInstance()")
if isnull(vvv) then
msgbox "null"
else
msgbox "not null"
end if
如果你不能创建对象,那么.dll可能存在问题,你可能最好只是从注册表中擦除组件并完全重新安装/重新实现它。
如果您可以创建对象,则访问该组件的应用程序存在问题。这通常是由于以下原因之一;
组件安全设置
用户设置
组件服务与注册表不匹配
如果这些都不起作用,请在注册表中搜索组件的名称并将其擦除。然后重新安装。