如何检查C#中是否安装了特定版本的Flash播放器。?

时间:2011-02-18 09:34:19

标签: c# flash registry

我想从我的代码中查看是否安装了特定版本的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。
  3. 但是,我的上述代码无效。

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

1 个答案:

答案 0 :(得分:3)

Adob​​e旧的(前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);