您需要通过COM互操作使用ComAdmin API。
将一个引用放在Windows\System32\Com\ComAdmin.dll上,然后:
COMAdmin.COMAdminCatalog catalog = new COMAdmin.COMAdminCatalogClass();
catalog.Connect(servername);
catalog.ShutdownApplication(AppNameOrAppID);
您可以在MSDN这里找到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,这很奇怪,也有点令人困惑。如果有人知道它是如何发生的,请评论。