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

原创 2003年04月02日 08:58:00

使用COM接口
1. 找到接口描述文件COMAdmin_TLB.pas
还是用了个笨办法,新建一个ActiveX Library,再新建一个COM Object,随便起个名字吧。保存。
然后选菜单View->Type Library,在右边Uses页中点右键,选择查看所有类型库,找到COM+1.0 Admin Type Library,保存。OK,在你的保存目录下有了一个COMAdmin_TLB.pas,拷出来,其它的可以删除啦:)
2. 我们来删除一个COM+应用程序
新建一个Delphi工程,保存。添加我们刚才生成的COMAdmin_TLB.pas,别忘了uses啊:)
在COMAdmin_TLB.pas中一共有三个接口,看名字大概能猜出几分
ICOMAdminCatalog     管理COM+目录的接口
ICatalogObject       COM+对象的接口
ICatalogCollection   COM+对象集合的接口

procedure TForm1.Button1Click(Sender: TObject);
var
  temp:IDispatch;
  i:integer;
CataColl:ICatalogCollection;
  CataObj:ICatalogObject;
  COMADminCata:ICOMAdminCatalog;
begin
 file://先创建一个ICOMAdminCatalog的接口指针,用于
 self.COMADminCata := CoCOMAdminCatalog.Create;
file://取得ICatalogCollection的接口指针,指向的是COM+应用程序的集合,注意参数是
file://字符串,Delphi帮助中有这样一段话:有效的集合依赖于你的COMAdmin Library的
file://版本,查看微软的文档来找到在你的COMAdmin Library版本中有效的集合
 temp := self.COMADminCata.GetCollection('Applications');
   self.CataColl := Iunknown(temp) as ICataLogCollection;
 file://下一句不可少,执行了它才真正读到的数据
 self.CataColl.Populate;
file://来个循环查找并删除,你可以新建一个叫aaa的COM+应用程序来进行测试,循环次
file://数为COM+应用程序的个数 –1,因为我们在循环中删了一个COM+应用程序
 for i := 0 to self.CataColl.Count - 2 do
   begin
  file://这是取第I个应用程序集合中的对象
     self.CataObj := Iunknown(self.CataColl.Item[i]) as ICatalogObject;
  file://你可以打出来名字看看和你在组件服务中的是否一样
     showmessage(self.CataObj.Name);
  file://如果对象名字是aaa,那么我们要进行删除啦
     if self.CataObj.Name = 'aaa' then
     begin
        self.CataColl.Remove(i);
   file://下一句有点像提交事务,如果你不写,是不会真正删除的
        self.CataColl.SaveChanges;
     end;
   end;
end;

使用Delphi控件
无意中点了一下帮助,居然发现Delphi有一个类将这些接口封装了(Delphi就是好,呵呵)。好,我们就用这个控件封装的类来实现删除
类定义在CmAdmCtl中,在主窗体中uses一下即可
对应于前面描述的COM接口,Delphi为我们封装了三个类
TCOMAdminCatalog = class(TOleServer)
TCOMAdminCatalogObject = class(TOleServer)
TCOMAdminCatalogCollection = class(TOleServer)
有了前面的描述,第二个程序好写多了
procedure TForm1.Button2Click(Sender: TObject);
var
  CataColl:TCOMAdminCatalogCollection;
  CataObj:TCOMAdminCatalogObject;
  COMADminCata:TCOMAdminCatalog;
  i:integer;
begin
  COMADminCata := TCOMAdminCatalog.Create(self);
  CataColl := COMADminCata.GetCollection('Applications');
  CataColl.Populate;
  for i := 0 to CataColl.Count - 2 do
  begin
    CataObj := CataColl.Get_Item(i);
    showmessage(CataObj.Name);
    if CataObj.Name = 'aaa' then
    begin
      CataColl.Remove(i);
      CataColl.SaveChanges;
    end;
  end;
  COMADminCata.Free;
end;

还有很多功能,比如导出应用程序,安装应用程序等等操作,函数名写的很清楚,具体可以看Delphi的帮助

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

使用COM接口1. 找到接口描述文件COMAdmin_TLB.pas还是用了个笨办法,新建一个ActiveX Library,再新建一个COM Object,随便起个名字吧。保存。然后选菜单View-...
  • eastliangliang
  • eastliangliang
  • 2003年04月02日 08:58
  • 708

Com 组件的装载和卸载

进程内组件的装载: 客户程序调用COM 库的 CoCreateInstance 或 CoGetClassObject 函数创建 COM 对象,在 CoGetClassObject 函数中,COM 库根...
  • PeterPan19890802
  • PeterPan19890802
  • 2010年08月25日 17:26
  • 4577

COM+在Windows 2003上的部署和调用

     使用COM+开发的软件,从XP转移到2003时出现了问题,客户端无论如何都访问不到安装在Windows 2003上的COM+服务。经过测试,找到了问题的原因,下面是对相关设置的描述和测试的经...
  • JasonDotWong
  • JasonDotWong
  • 2007年01月23日 15:29
  • 1885

com+组件的注册,卸载和管理

com+打开命令:dcomcnfg 注册和卸载 “Regsvr32.exe”命令是用来对“ActiveX控件”进行注册的。Regsvr32命令格式/u       卸载ActiveX控件/s     ...
  • educast
  • educast
  • 2008年09月05日 21:12
  • 4754

清除COM口数值,释放被占用的COM口

最近在实用串口工具时,因为不断重装驱动导致com口涨到com22了,而工具软件只能识别到COM16,所以需要清除,从0开始        在“运行”对话框中输入“regedit”进入注册表;然后进...
  • cyj5366
  • cyj5366
  • 2013年08月01日 09:56
  • 19042

如何删除电脑中使用过的COM端口

1.打开注册表编辑器:开始--运行中输入regedit就可以了   2.打开注册表HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\Control\COM Nam...
  • kiasur
  • kiasur
  • 2016年08月06日 21:43
  • 1496

无法注册 URL http://+:8735/Service/。另一应用程序已使用 HTTP.SYS 注册了该 URL。的解决办法。

        弄了一上午,终于把使用NetTcpBinding的双工通讯给弄清楚了,也算是对wcf有所掌握了,为了解决穿透防火墙的问题,所以决定尝试一下WsDualHttpBinding的双工通信,...
  • EricBai
  • EricBai
  • 2008年11月01日 18:04
  • 7260

SQL Server 服务器的注册于删除

一、注册服务器 1、打开已注册的服务器组,选择完服务器后在“已注册的服务器区域中选择SQL Server 组”,单击鼠标右键,在弹出的快捷菜单中选择新建服务器注册命令,进行相关设置后单击测试,若测试...
  • giswhw66
  • giswhw66
  • 2017年03月12日 10:33
  • 186

如何清除windows清除com口

打开注册表HKEY_LOCAL_MACHINE/SYSTEM/CurrentControlSet/Control/COM Name Arbiter 把ComDB删除后重新尝试即可!(注:这样会重建所...
  • wuxiaobingandbob
  • wuxiaobingandbob
  • 2014年11月04日 12:54
  • 688

删除WINDOWS漏洞文件名 com1. 还原加密数据

由于现在网上加密软件遍地都是,有的还号称“国防级加密”…… 最近使用了一款名叫 E-文件夹加密大师,网上有强人用winrar也把它破了,在这就不说了该软件利用的是windows的一个文件名漏洞即win...
  • Mini_Pray
  • Mini_Pray
  • 2006年12月16日 15:20
  • 3356
内容举报
返回顶部
收藏助手
不良信息举报
您举报文章:用程序删除已注册的COM+应用程序
举报原因:
原因补充:

(最多只允许输入30个字)