如何检查C#中是否安装了特定版本的Flash播放器。?
我想从我的代码中查看是否安装了特定版本的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个文件夹:
- FlashPlayer和
- FlashPlayerActiveX。
但是,我上面的代码不起作用。
请告诉我如何检查系统中是否安装了特定版本的Flash播放器,以及是否使用C#.NET 。
Adobe的旧(前10)IE Flash检测代码用于在VBScript中测试它是否可以实例化对象ShockwaveFlash.ShockwaveFlash。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; // eg "WIN 10,2,152,26" // Clean up allocated COM Object Marshal.ReleaseComObject(flashObject);