如何检查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个文件夹:

  1. FlashPlayer和
  2. FlashPlayerActiveX。

但是,我上面的代码不起作用。

请告诉我如何检查系统中是否安装了特定版本的Flash播放器,以及是否使用C#.NET

Adobe的旧(前10)IE Flash检测代码用于在VBScript中测试它是否可以实例化对象ShockwaveFlash.ShockwaveFlash。。 如果它只是您要测试的主要版本,您可以检查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; // eg "WIN 10,2,152,26" // Clean up allocated COM Object Marshal.ReleaseComObject(flashObject);