您必须通过COM互操作使用ComAdmin API.
在Windows\System32\Com\ComAdmin.dll上引用一个引用,然后:
COMAdmin.COMAdminCatalog catalog = new COMAdmin.COMAdminCatalogClass();
catalog.Connect(servername);
catalog.ShutdownApplication(AppNameOrAppID);
Run Code Online (Sandbox Code Playgroud)
您可以在此处找到MSDN中的ComAdmin参考.
这是一个COM API,有点奇怪.例如.您无法实例化COMAdminCatalog,因为它是一个接口,而不是类,因此您必须使用COMAdminCatalogClass来创建新实例.使用Visual Studio的对象浏览器在COMAdmin命名空间中查看以找出这些类型的陷阱.
编辑(注意):
实际上,你可以写
COMAdmin.COMAdminCatalog catalog = new COMAdmin.COMAdminCatalog();
Run Code Online (Sandbox Code Playgroud)
它的工作原理令人惊讶,因为COMAdminCatalog是一个界面.但它必须是VStudio或C#编译器的技巧,因为生成的程序集包含以下IL:
newobj instance void [Interop.COMAdmin]COMAdmin.COMAdminCatalogClass::.ctor()
Run Code Online (Sandbox Code Playgroud)
所以它以某种方式发现COMAdminCatalogClass必须实例化,这很奇怪,也有点混乱.如果有人知道它是如何发生的,请评论.