1

Macromedia FlashPlayerがWMIwin32_productテーブルに存在しないのはなぜですか?クエリを実行しているマシンにFlashPlayerがインストールされています。

次のクエリを実行しようとしています。

Select * From win32_product where name like '%Flash%'

インストールされているFlashPlayerのバージョンを取得する他の方法はありますか?このプロジェクトはC#で開発されています。

4

1 に答える 1

1

このクラスは、 WindowsインストーラWin32_Productによってインストールされる製品のみを表します。FlashPlayerが別のインストールサービスを使用しているようです。

Flash Player ActiveXコントロール(IE用Flash Player)の存在とバージョンを確認する方法は次のとおりです。

  1. ProgIDSystem.Typeに対応するオブジェクトを取得してみてください。ShockwaveFlash.ShockwaveFlash入手できない場合は、FlashPlayerがインストールされていません。成功した場合は、手順2に進みます。
  2. Type取得したオブジェクトのインスタンスを作成します。
  3. GetVariable「$version」パラメータを使用して、取得したオブジェクトのメソッドを呼び出します。これにより、Flash Playerのバージョン文字列が「OSmajor、minor、release、build」の形式で表示されます(例:「WIN10,0,22,87」)。

このようなもの(免責事項:私はC#をよく知らないので、このコードは不完全かもしれません):

Type tFlash = Type.GetTypeFromProgID("ShockwaveFlash.ShockwaveFlash");
if (tFlash != null)
{
    object FlashPlayer = Activator.CreateInstance(tFlash);
    string version = (string) tFlash.InvokeMember("GetVariable",
        System.Reflection.BindingFlags.InvokeMethod,
        null, FlashPlayer, new Object[] {"$version"});

    Console.WriteLine(version);
}
else
{
    Console.WriteLine("Flash Player is not installed.");
}

Flash Playerは現在32ビットのみであり、64ビットコードからActiveXオブジェクトを操作できないため、このアプローチではx86プラットフォーム用のアプリケーションをビルドする必要があることに注意してください。

于 2009-08-24T17:06:17.637 に答える