您现在的位置:首页 >> API >> API >> 内容

用程序删除已注册的COM+应用程序(2)

时间:2011/9/3 15:44:10 点击:

用程序设置COM+应用程序的属性。  
  今天从别人机器上导出了个代理程序,注册在自己的机器上,在组件服务里查看COM+应用程序的属性,发现代理程序有一个属性是可以修改的,就是远程服务器名称,在更改了此名称后,程序中不需要用CreateRemote函数,也可以申请到远程接口指针。可是我们应该给用户一个友好的界面,不能总让用户打开组件服务吧,来,我们写个程序吧。  
  这次我们只用Delphi控件好啦(唉,懒就一个字^_^)  
  定义三个变量  
  CataColl:TCOMAdminCatalogCollection;  
  CataObj:TCOMAdminCatalogObject;  
  COMADminCata:TCOMAdminCatalog;  
  begin  
      COMADminCata   :=   TCOMAdminCatalog.Create(self);  
      CataColl   :=   COMADminCata.GetCollection('Applications');  
      CataColl.Populate;  
      for   i   :=   0   to   CataColl.Count   -   1   do  
      begin  
          CataObj   :=   CataColl.Get_Item(i);  
          if   CataObj.Name   =   你的应用程序名   then  
  begin  
  CataObj.Set_Value('ApplicationProxyServerName',新服务器名);  
  CataColl.SaveChanges; //记着保存修改  
  break;  
  end;  
      end;  
  end;  
  代码并不长,关键的函数是Set_Value,函数原型如下:  
  procedure   Set_Value(const   bstrPropName:   WideString;   retval:   OleVariant);  
  关键是这个bstrPropName――属性的名称,字符串类型,到底是什么字符串呢?我翻了一通MSDN,还是没找到到底该用什么值,瞎猜了一通也不对。微软就是搞笑,给了一个函数,却不给怎么调用,或许是我笨,没找到。不过笨人也有笨办法,把这些属性值找出来。  
  TCOMAdminCatalogCollection这个变量保存的是一个集合(Collection),变量通过GetCollection函数来赋值,MSDN中有对这些集合的说明,找到了一个PropertyInfo集合(看着像),于是把它取了出来,用for循环进行遍历,就可以得到相应的属性名了,代码如下:  
  CataColl   :=   CataColl.GetCollection('PropertyInfo',CataObj.Get_Key);  
  CataColl.Populate;  
  for   j   :=   0   to   CataColl.Count   -   1   do  
  begin  
      CataObj   :=   CataColl.Get_Item(j);  
      self.Memo1.Lines.Add(CataObj.Name);  
  end;  
  从Memo中就可以读出各个属性值了。对COM+目录的操作就是一个取集合和遍历集合的过程,大家自己去举一反三吧^_^  
  以下是PropertyInfo集合的各个属性名称,也就是Set_Value方法的第一个参数bstrPropName的值:  
  Name  
  ID  
  Description  
  IsSystem  
  Authentication  
  ShutdownAfter  
  RunForever  
  Identity  
  Password  
  Activation  
  Changeable  
  Deleteable  
  CreatedBy  
  AccessChecksLevel  
  ApplicationAccessChecksEnabled  
  CommandLine  
  ImpersonationLevel  
  CRMEnabled  
  AuthenticationCapability  
  3GigSupportEnabled  
  QueuingEnabled  
  QueueListenerEnabled  
  EventsEnabled  
  ApplicationProxy  
  ApplicationProxyServerName  
  CRMLogFile  

上一页12下一页

作者:网络 来源:转载
共有评论 0相关评论
发表我的评论
  • 大名:
  • 内容:
本类推荐
  • 没有
本类固顶
  • 没有
  • 盒子文章(www.2ccc.com) © 2024 版权所有 All Rights Reserved.
  • 沪ICP备05001939号