除了WMI之外,还有其他方法可以获取真正的窗口操作系统状态吗?

时间:2018-09-05 02:49:22

标签: c#

WMI类SoftwareLicensingProduct为我提供了一种获取Windows操作系统的“ LicenseStatus”的方法。

public static bool IsWindowsActivated()
{
ManagementScope scope = new ManagementScope(@"\\" + System.Environment.MachineName + @"\root\cimv2");
scope.Connect();

SelectQuery searchQuery = new SelectQuery("SELECT * FROM SoftwareLicensingProduct WHERE ApplicationID = '55c92734-d682-4d71-983e-d6ec3f16059f' and LicenseStatus = 1");
ManagementObjectSearcher searcherObj = new ManagementObjectSearcher(scope, searchQuery);

using (ManagementObjectCollection obj = searcherObj.Get())
{
    return obj.Count > 0;
}

}

问题1. WMI类是否可用于所有窗口OS。 (Window XP +)?

问题2。还有其他方法可以得到相同的结果吗?

谢谢!

1 个答案:

答案 0 :(得分:1)

  

问题1. WMI类是否可用于所有窗口OS。 (窗口   XP +)?

正如评论中指出的

Troubleshooting and Tips

并非所有的 WMI 功能都并非在所有版本的Windows上都可用,因此您必须视情况进行检查


  

问题2。还有其他方法可以得到相同的结果吗?

除了 WMI

,没有其他BCL方法可以做到这一点

但是,如果您觉得有必要,可以为这种事情P /调用Win32 Apis 。如果它存在于 WMI 中,则很可能作为 Win32 Ap i对应版本

SLGetApplicationInformation function

  

获取有关指定应用程序的信息。


尽管我的间谍意识告诉我您无法查询 WMI 某些内容,但您可能会在 Win32 Api

中找到相同的问题