Запрашивать свойства дополнительных компонентов Windows довольно просто через CIM. Например, в C #:
using Microsoft.Management.Infrastructure;
using (var session = CimSession.Create("localhost"))
foreach (var instance in session.QueryInstances(@"root\CIMV2", "WQL", "SELECT * FROM Win32_OptionalFeature"))
foreach (var prop in instance.CimInstanceProperties)
Console.WriteLine(prop);
Что касается изменения этих свойств, то в классе нет ни членов, ни сеттеров ( docs ).
Очевидно, что этого можно достичь, используя Enable-WindowsOptionalFeature
в PowerShell или DSIM
в командном процессоре Windows. Но возможно ли это сделать через CIM? Я ожидаю, что это в конечном итоге то, что эти консольные инструменты делают под капотом, однако я не смог найти исходный код для них.