我用mstsc登录远程服务器,然后在上面配置我的COM+组件,可能是权限或者别的什么原因,运行不起来。
我的COM+支持IObjectControl,IObjectContruct接口。
我在COM+ Application属性页里面,在Identify中选择了This User。然后我对每个Component的Activation选择了Enable Object Pooling, Enable Object Constuction。跟着就没法调用了。
然后我经过多次测试,发现如果我选择了Enable Object Constuction,就不能激活,IObjectConstruction::Construct()是已经执行了,并返回S_OK,但是IObjectControl::Activate()没有执行,只是在组件管理器返回了一个577的Event。如果把Enable Object Constuction去掉,一切OK,但是我却不能从IObjectConstructString获得Contructiong了。(不好意思,我的服务器是英文版机器,要是全写英文,我可能表达不大清楚,但是对于某些词我怕我翻译不够准确,所以还是保留了原词,望见谅)。声明一下,我在单独的机器上做同样的配置是成功的,就是在用mstsc登录在远程服务器上,然后在那上面配置才出现问题。

解决方案 »

  1.   

    在Identify中选择了*(This User)*使用指定用户启动方式
      

  2.   

    1.不选择Enforce checks access for this application.
    2.选择perform access checks at the process and compont level. Authentication level for calls选择packet,imporsonation level选择Delegate,添加一个角色包含的用户名与指定用户,以及我登录的用户都一致。
    这两种情况都试过了,还不行。注意一下我的重点,我是选择了Enable Object Pooling, Enable Object Constuction后才不能激活的,要是不选,一切正常。后来我发现了,用VB Script调用竟然成功,可是C++客户调用不成功。我想,可能是VB Script执行文件script.exe还是什么东西的,跟我自己写的C++应用程序运行的环境,用户,权限等不一致的原因。
    可是是什么原因呢?希望大家给我想想,可能问题会出在哪里,谢了。