如何从.NET重新启动远程服务器上的COM +应用程序?

时间:2009-06-05 08:30:53

标签: .net com comadmin

如何以编程方式从.NET中的代码重新启动远程服务器上运行的COM +应用程序?

1 个答案:

答案 0 :(得分:7)

您必须通过COM互操作使用ComAdmin API。

在Windows \ System32 \ Com \ ComAdmin.dll上添加引用,然后:

COMAdmin.COMAdminCatalog catalog = new COMAdmin.COMAdminCatalogClass();
catalog.Connect(servername);
catalog.ShutdownApplication(AppNameOrAppID);

您可以在MSDN here中找到ComAdmin参考。

这是一个COM API,有点奇怪。例如。您无法实例化COMAdminCatalog,因为它是一个接口,而不是类,因此您必须使用COMAdminCatalogClass来创建新实例。使用Visual Studio的对象浏览器在COMAdmin命名空间中查看以找出这些类型的陷阱。

编辑(注意):

实际上,你可以写

COMAdmin.COMAdminCatalog catalog = new COMAdmin.COMAdminCatalog();

并且它的工作原理令人惊讶,因为COMAdminCatalog是一个接口。但它必须是VStudio或C#编译器的技巧,因为生成的程序集包含以下IL:

newobj instance void [Interop.COMAdmin]COMAdmin.COMAdminCatalogClass::.ctor()

所以它以某种方式发现必须实例化COMAdminCatalogClass,这很奇怪并且有点混乱。如果有人知道它是如何发生的,请发表评论。