delphi注册/卸载/关闭/启动Com+组件

//uses ComObj

//安装COM+应用程序

function InstallCOMApplication:Boolean;
const
SComApplicationName = '你的应用程序名';
SFullDllFileName = 'C:/a.dll';//你的DLL,这里只注册一个DLL
var
COMAdminCatalog : OleVariant;
CatalogCollection : OleVariant;
CatalogObject : OleVariant;
i : Integer;
begin
try
COMAdminCatalog := CreateOleObject('COMAdmin.COMAdminCatalog');
CatalogCollection :=
COMAdminCatalog.GetCollection('Applications');
CatalogCollection.Populate;
for i := 0 to CatalogCollection.Count - 1 do
if CatalogCollection.Item[i].Name
= SComApplicationName then Break;
if i = CatalogCollection.Count then
begin
CatalogObject := CatalogCollection.Add;
CatalogObject.Value['Name'] := SComApplicationName;
CatalogCollection.SaveChanges;
end
else
CatalogObject := CatalogCollection.Item[i];
COMAdminCatalog.InstallComponent(
CatalogObject.Name,
SFullDllFileName,'','');
Result := True;
except
Result := False;
end;
end;

//卸载COM+应用程序

function UnInstallCOMApplication:Boolean;stdcall;
const
SComApplicationName = '你的应用程序名';
var
COMAdminCatalog : OleVariant;
CatalogCollection : OleVariant;
i : Integer;
begin
try
COMAdminCatalog := CreateOleObject('COMAdmin.COMAdminCatalog');
CatalogCollection := COMAdminCatalog.GetCollection('Applications');
CatalogCollection.Populate;
for i := 0 to CatalogCollection.Count - 1 do
if CatalogCollection.Item[i].Name = SComApplicationName then
begin
CatalogCollection.Remove(i);
CatalogCollection.SaveChanges;
Break;
end;
Result := True;
except
Result := False;
end;
end;

//启动/关闭COM+服务

function StartCOMService(const AStart : Boolean):Boolean;
const
SComApplicationName = '你的应用程序名';
var
COMAdminCatalog : OleVariant;
CatalogCollection : OleVariant;
i : Integer;
begin
Result := False;
try
COMAdminCatalog := CreateOleObject('COMAdmin.COMAdminCatalog');
CatalogCollection := COMAdminCatalog.GetCollection('Applications');
CatalogCollection.Populate;
for i := 0 to CatalogCollection.Count - 1 do
if CatalogCollection.Item[i].Name = SComApplicationName then
begin
if AStart then
COMAdminCatalog.StartApplication(SComApplicationName)
else
COMAdminCatalog.ShutdownApplication (SComApplicationName);
Result := True;
Break;
end;
except
end;
end;

posted @ 2012-02-13 19:23  sudigua  阅读(948)  评论(0编辑  收藏  举报