Взгляните на WMI Code Creator (бесплатный инструмент от Microsoft) & mdash; он может генерировать код WMI для вас на разных языках, включая C #.
Вот пример, иллюстрирующий использование метода Win32_Product.Uninstall
. Вам необходимо знать GUID, имя и версию приложения, которое вы хотите удалить, поскольку они являются ключевыми свойствами класса Win32_Product
:
...
ManagementObject app =
new ManagementObject(scope,
"Win32_Product.IdentifyingNumber='{99052DB7-9592-4522-A558-5417BBAD48EE}',Name='Microsoft ActiveSync',Version='4.5.5096.0'",
null);
ManagementBaseObject outParams = app.InvokeMethod("Uninstall", null);
Console.WriteLine("The Uninstall method result: {0}", outParams["ReturnValue"]);
Если у вас есть частичная информация о приложении (например, только имя или имя и версия), вы можете использовать запрос SELECT
для получения соответствующего Win32_Process
объекта:
...
SelectQuery query = new SelectQuery("Win32_Product", "Name='Microsoft ActiveSync'");
EnumerationOptions enumOptions = new EnumerationOptions();
enumOptions.ReturnImmediately = true;
enumOptions.Rewindable = false;
ManagementObjectSearcher searcher = new ManagementObjectSearcher(scope, query, options);
foreach (ManagementObject app in searcher.Get())
{
ManagementBaseObject outParams = app.InvokeMethod("Uninstall", null);
Console.WriteLine("The Uninstall method result: {0}", outParams["ReturnValue"]);
}