我想从我的代码中查看是否安装了特定版本的Flash播放器。 我使用了以下代码
using Microsoft.Win32
RegistryKey RK = Registry.CurrentUser.OpenSubKey("HKEY_LOCAL_MACHINE\\SOFTWARE\\Macromedia\\FlashPlayer");
if (RK != null)
{
// It's there
}
else
{
// It's not there
}
在注册表中如果我搜索版本为10.2.161.23的flash播放器,则位置
“HKEY_LOCAL_MACHINE \ SOFTWARE \ Macromedia的”
有2个文件夹:
但是,我的上述代码无效。
请告诉我如何检查系统中是否安装了特定版本的Flash播放器使用C#.NET 。
答案 0 :(得分:3)
Adobe旧的(前10个)IE Flash检测代码,用于在VBScript中测试它是否可以实例化对象ShockwaveFlash.ShockwaveFlash。< major version>。如果它只是您要测试的主要版本,您可以在HKCR下检查这些密钥,例如HKEY_CLASSES_ROOT\ShockwaveFlash.ShockwaveFlash.10
。
SWFObject实例化无版本对象名称ShockwaveFlash.ShockwaveFlash,并查询其$version
属性。要在C#中执行此操作:
// Look up flash object type from registry
var type = Type.GetTypeFromProgID("ShockwaveFlash.ShockwaveFlash");
if (type == null)
{
// No flash
return;
}
// Create a flash object to query
// (should probably try/catch around CreateInstance)
var flashObject = Activator.CreateInstance(type);
var versionString = flashObject.GetType()
.InvokeMember("GetVariable", BindingFlags.InvokeMethod,
null, flashObject, new object[] {"$version"})
as string;
// e.g. "WIN 10,2,152,26"
// Clean up allocated COM Object
Marshal.ReleaseComObject(flashObject);