Как проверить, установлена ​​ли конкретная версия флеш плеера или нет в C #.? - PullRequest
3 голосов
/ 18 февраля 2011

Я хочу проверить из своего кода, установлена ​​ли конкретная версия флеш-плеера или нет.Я использовал следующий код

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, местоположение

"HKEY_LOCAL_MACHINE \ SOFTWARE \ Macromedia"

имеет 2 папки:

  1. FlashPlayer и
  2. FlashPlayerActiveX.

Но приведенный выше код не работает.

Пожалуйста, дайте мне знать, как проверить, установлена ​​ли в системе определенная версия флеш-плеера или нет ИСПОЛЬЗУЯ C # .NET .

1 Ответ

3 голосов
/ 18 февраля 2011

Старый 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;
// e.g. "WIN 10,2,152,26"

// Clean up allocated COM Object
Marshal.ReleaseComObject(flashObject);
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...