为什么Macromedia Flash Player不在WMI win32_product表中? Flash Player安装在我正在执行查询的计算机上。
我正在尝试执行以下查询:
Select * From win32_product where name like '%Flash%'
是否有其他方法可以获取任何已安装的Flash Player的版本。该项目是用C#开发的。
答案 0 :(得分:1)
Win32_Product
类仅代表Windows Installer安装的产品。看起来Flash Player使用其他安装服务。
以下是如何确定Flash Player ActiveX控件(适用于IE的Flash Player)的存在和版本:
System.Type
ProgID对应的ShockwaveFlash.ShockwaveFlash
对象。如果未能获取,则表明未安装Flash Player。如果成功,请转到步骤2. Type
对象的实例。GetVariable
方法。这将为您提供“OS major,minor,release,build”形式的Flash Player版本字符串,例如“赢10,0,22,87”。这样的事情(免责声明:我不太了解C#,所以这段代码可能很蹩脚):
Type tFlash = Type.GetTypeFromProgID("ShockwaveFlash.ShockwaveFlash");
if (tFlash != null)
{
object FlashPlayer = Activator.CreateInstance(tFlash);
string version = (string) tFlash.InvokeMember("GetVariable",
System.Reflection.BindingFlags.InvokeMethod,
null, FlashPlayer, new Object[] {"$version"});
Console.WriteLine(version);
}
else
{
Console.WriteLine("Flash Player is not installed.");
}
请注意,此方法要求您为x86平台构建应用程序,因为Flash Player当前仅为32位,并且您无法从64位代码与其ActiveX对象进行交互。