如何使用c#检查是否激活了Windows功能

时间:2014-09-24 14:32:03

标签: c# .net windows asp.net-mvc-4

我的研究表明,我可以在DISM上使用以下命令找出Windows功能的状态(已启用/已启用):

dism /online /get-features | more

使用此命令我得到一个列表(对不起德语):

windows features

我可以使用类Process()通过C#执行dism-command。我的下一个任务是将此列表解析为KeyValuePairs列表,并比较我所需功能的状态。但这似乎很不方便且容易出错。

是否有任何稳定的方法可以检查特定的Windows功能是否已激活?

(我使用的是.NET Framework 4.5)

我想激活以下功能:   - Windows Server 2008   - Windows Server 2008 R2  - Windows 7的   - Windows 8   - Windows 8.1   - Windows Server 2012

1 个答案:

答案 0 :(得分:0)

这是我使用过的一个类,我从某个地方得到了一个例子(最有可能是这样):

        ManagementClass objMC = new ManagementClass("Win32_ServerFeature");
        ManagementObjectCollection objMOC = objMC.GetInstances();
        foreach (ManagementObject objMO in objMOC)
        {
            string featureName = (string)objMO.Properties["Name"].Value;

            //add to my list
            InstalledFeatures.Add(featureName);

            if (BadRoles.Contains(featureName))
                DetectedBadRoles.Add(featureName);
        }