Вы должны использовать ComAdmin API через COM-взаимодействие.
Поместите ссылку на Windows \ System32 \ Com \ ComAdmin.dll, затем:
COMAdmin.COMAdminCatalog catalog = new COMAdmin.COMAdminCatalogClass();
catalog.Connect(servername);
catalog.ShutdownApplication(AppNameOrAppID);
Справочник ComAdmin можно найти в MSDN здесь .
Это 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, что достаточно странно и немного запутанно. Если кто-то знает, как это происходит, прокомментируйте.