Основываясь на запросе WMIC, который вы дали, вы извлекаете только свойство «Имя», которое повышает вашу производительность, поэтому ваш запрос выполняется только в течение 2 секунд.
Итак, это ...
WMIC /NAMESPACE:\\root\CIMV2 PATH SoftwareLicensingProduct WHERE LicenseStatus=1 GET Name
Переводит этот запрос в ваш код ...
SELECT Name FROM SoftwareLicensingProduct WHERE LicenseStatus=1
Ваш другой пример верен, но вам просто нужно переместить вторые кавычки на
WMIC /NAMESPACE:\\root\CIMV2 PATH SoftwareLicensingProduct WHERE "name like '%Office%' and LicenseStatus=1" Get Name
Что в вашем коде будет выглядеть так (я добавил LicenseStatus к запросу, так как вы ссылаетесь на это свойство в своей подпрограмме)
ManagementObjectSearcher searcher =
new ManagementObjectSearcher("root\\CIMV2",
"SELECT Name, LicenseStatus FROM " + wmi + " WHERE Name LIKE \"%Office%\" and LicenseStatus=1");
foreach (ManagementObject queryObj in searcher.Get())
{
queryObj["Name"].ToString() + "', '" + queryObj["LicenseStatus"].ToString();
Это должно выполняться довольно быстро, так как вы получаете только два свойства, которые выиспользуете.