C# &引用;“地位”;WMI功能的返回为空

C# &引用;“地位”;WMI功能的返回为空,c#,windows,windows-services,wmi,wmi-query,C#,Windows,Windows Services,Wmi,Wmi Query,我正在将安装程序从VBS转换为C#程序。 在此安装中,我必须使用DISM激活一些windows功能 "cmd.exe", "/C Dism /Online /Enable-Feature /FeatureName:WAS-ProcessModel" 我用这种方式激活了它们。当我用手检查的时候 dism /online /get-featureinfo /featurename:WAS-ProcessModel 在命令提示符下,我获取功能的信息,包括状态。(状态:激活) 但是当我试图通过我的

我正在将安装程序从VBS转换为C#程序。 在此安装中,我必须使用DISM激活一些windows功能

"cmd.exe", "/C Dism /Online /Enable-Feature /FeatureName:WAS-ProcessModel" 
我用这种方式激活了它们。当我用手检查的时候

dism /online /get-featureinfo /featurename:WAS-ProcessModel
在命令提示符下,我获取功能的信息,包括状态。(状态:激活)

但是当我试图通过我的程序获取它时,状态返回只是空的

下面是我的程序的相关部分:

ManagementScope scope = new ManagementScope("\\\\.\\ROOT\\cimv2");

//create object query
ObjectQuery query = new ObjectQuery("SELECT * FROM Win32_OptionalFeature Where Name=\"WAS-ProcessModel\"");

//create object searcher
ManagementObjectSearcher searcher = new ManagementObjectSearcher(scope, query);

//get a collection of WMI objects
ManagementObjectCollection queryCollection = searcher.Get();

//enumerate the collection.
foreach (ManagementObject m in queryCollection)
{
    // access properties of the WMI object

    Console.WriteLine("Caption : {0}" + Environment.NewLine + "Status : {1}", m["Caption"], m["Status"]);

}
这本书的回报是:

Caption : Prozessmodell
Status : 
如何获取功能的状态? 我做错什么了吗?我不熟悉DISM/WMI,所以这可能只是我做错了一些基本的事情。

正如上面所说:

“此属性为空。”

您需要使用
InstallState
属性:

标识可选功能的状态。下列国家是: 可能的:

启用(1)

残疾人士(2)

缺席(3)

未知(4)

您可以将其添加到枚举中,并使用该枚举显示输出:

public enum InstallState
{
    Enabled = 1,
    Disabled = 2,
    Absent = 3,
    Unknown = 4
}

然后返回:

描述:过程模型

状态:已启用


哇,谢谢你的快速帮助!是的,这解决了我的问题:D
foreach (ManagementObject m in queryCollection)
{ 
  var status = (InstallState)Enum.Parse(typeof(InstallState), m["InstallState"].ToString());

  Console.WriteLine("Caption : {0}" 
            + Environment.NewLine + "Status : {1}", m["Caption"], status);
}