SoftwareLicensingProduct哪一个是我的

时间:2014-06-23 11:09:21

标签: c# .net wmi

我需要检查操作系统是否需要激活, 我的以下代码显示了许多“频道”。

static void Main(string[] args)
    {
        ManagementObjectSearcher searcher =
               new ManagementObjectSearcher
    (
    "root\\CIMV2",
    "SELECT 
    Description,
    LicenseIsAddon,
    LicenseStatus 
    FROM SoftwareLicensingProduct 
    WHERE LicenseIsAddon = False"
    );

        foreach (ManagementObject queryObj in searcher.Get())
        {
            if (queryObj["Description"].ToString().ToLower().Contains("operating"))
            {
                foreach (var item in queryObj.Properties)
                {
                    Console.WriteLine(item.Value);
                }
            }
        }
        Console.Write("***done***");
        Console.ReadLine();
    }

我如何知道要检查哪一个以确定是否需要激活操作系统?

或者我是唯一可以看到的方法,如果我有任何LicenseStatus = 1?如果安装了一个已激活且未激活的OS,则当然可能出错。

由于

1 个答案:

答案 0 :(得分:0)

目前我对频道进行了一些过滤并得出结论,这已经足够了:

private void getOSActivation()
{
   try
   {
     ManagementObjectSearcher LicenseSearcher =
                new ManagementObjectSearcher("root\\CIMV2",
                "SELECT LicenseStatus,Description FROM SoftwareLicensingProduct");

     foreach (ManagementObject LSObj in LicenseSearcher.Get())
     {
       OStestString = LSObj["Description"].ToString().ToLower();
       if (
           OStestString.Contains("operating") 
           &&
           // next line is new
           (OStestString.Contains("slp") || OStestString.Contains("dm"))
          )
          {
            foreach (var item in LSObj.Properties)
            {
              OSresults.Add(LSObj["LicenseStatus"].ToString());
            }
          }
        }
      }
    catch (Exception LSOexception)
    {
      Console.WriteLine(LSOexception.Message);
    }
  }