用程序设置COM+应用程序的属性。

类别:Delphi 点击:0 评论:0 推荐:
 

用程序设置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

本文地址:http://com.8s8s.com/it/it5392.htm