【问题标题】:"Status" return of a WMI feature is emptyWMI 功能的“状态”返回为空
【发布时间】:2015-11-30 12:50:40
【问题描述】:

我正在将安装程序从 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 的新手,所以也许这只是我做错了一些基本的事情。

【问题讨论】:

    标签: c# windows windows-services wmi wmi-query


    【解决方案1】:

    正如documentation for the Status property on the Win32_OptionalFeature class 所说:

    “此属性为 NULL。”

    您需要 InstallState 属性:

    标识可选功能的状态。以下状态是 可能:

    已启用 (1)

    已禁用 (2)

    缺席 (3)

    未知 (4)

    您可以将它们添加到枚举中,并使用它来显示输出:

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

    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);
    }
    

    然后返回:

    标题:流程模型

    状态:启用

    【讨论】:

    • 哇,感谢您的快速帮助!是的,这解决了我的问题:D
    猜你喜欢
    • 1970-01-01
    • 2020-11-14
    • 2020-09-25
    • 2016-02-15
    • 1970-01-01
    • 2023-03-30
    • 2018-05-19
    • 1970-01-01
    • 2019-07-14
    相关资源
    最近更新 更多