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。还有其他方法可以得到相同的结果吗?
谢谢!
答案 0 :(得分:1)
问题1. WMI类是否可用于所有窗口OS。 (窗口 XP +)?
正如评论中指出的
并非所有的 WMI 功能都并非在所有版本的Windows上都可用,因此您必须视情况进行检查
问题2。还有其他方法可以得到相同的结果吗?
除了 WMI
,没有其他BCL方法可以做到这一点但是,如果您觉得有必要,可以为这种事情P /调用Win32 Apis 。如果它存在于 WMI 中,则很可能作为 Win32 Ap i对应版本
SLGetApplicationInformation function
获取有关指定应用程序的信息。
尽管我的间谍意识告诉我您无法查询 WMI 某些内容,但您可能会在 Win32 Api
中找到相同的问题