Macromedia FlashPlayerがWMIwin32_productテーブルに存在しないのはなぜですか?クエリを実行しているマシンにFlashPlayerがインストールされています。
次のクエリを実行しようとしています。
Select * From win32_product where name like '%Flash%'
インストールされているFlashPlayerのバージョンを取得する他の方法はありますか?このプロジェクトはC#で開発されています。
このクラスは、 WindowsインストーラWin32_Product
によってインストールされる製品のみを表します。FlashPlayerが別のインストールサービスを使用しているようです。
Flash Player ActiveXコントロール(IE用Flash Player)の存在とバージョンを確認する方法は次のとおりです。
System.Type
に対応するオブジェクトを取得してみてください。ShockwaveFlash.ShockwaveFlash
入手できない場合は、FlashPlayerがインストールされていません。成功した場合は、手順2に進みます。Type
取得したオブジェクトのインスタンスを作成します。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プラットフォーム用のアプリケーションをビルドする必要があることに注意してください。