为什么Macromedia Flash Player 不在WMI win32_product 表中?Flash Player 安装在我执行查询的机器上。
我正在尝试执行以下查询:
Select * From win32_product where name like '%Flash%'
有没有其他方法可以获取任何已安装的 Flash Player 的版本。这个项目是用 C# 开发的。
该类Win32_Product
仅代表由Windows Installer 安装的产品。看起来 Flash Player 使用了另一个安装服务。
下面介绍如何确定 Flash Player ActiveX 控件(用于 IE 的 Flash Player)的存在和版本:
System.Type
对应的对象。ShockwaveFlash.ShockwaveFlash
如果您未能获得它,则说明 Flash Player 未安装。如果成功,请转到步骤 2。Type
对象的实例。GetVariable
获取的对象的方法。这将为您提供格式为“OS major,minor,release,build”的 Flash Player 版本字符串,例如“WIN 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 对象进行交互。