私の知る限り、Windows MediaPlayer10はWPFMediaElementが機能するための最小要件です。プログラムで(.NETから)WMPが存在するかどうか、およびそのバージョンを確認するための適切な方法は何ですか?
3 に答える
インストーラーで使用した方法は、次のレジストリ値を確認することです。
HKLM
Software\Microsoft\MediaPlayer\PlayerUpgrade
PlayerVersion
PlayerVersion値は、「10,0,0,0」のような文字列に設定されます。(数字を区切るには、ピリオドではなくコンマが使用されることに注意してください。)最初の数字(メジャーバージョン)を抽出し、それが10以上であることを確認する必要があります。
WMPを検出する方法に関する公式のドキュメントは見つかりませんでしたが、上記の方法は現在のバージョンのWindowsおよびWMPで正しく機能しているようです。
WMP9(Windows XPに付属のバージョン)がインストールされている場合、MediaElementを使用しようとしてもアプリケーションはクラッシュしませんが、コントロールは何もレンダリングせず、警告メッセージがデバッガーに出力されることに注意してください。
アプリケーションがVista以降でのみ使用される場合、VistaにはWMP10が付属しているため、これについて心配する必要はありません。
システムにインストールされているすべての製品を確認する方法は次のとおりです。
SelectQuery allProductsQuery = new SelectQuery("Win32_Product");
ManagementObjectSearcher allProducts =
new ManagementObjectSearcher(allProductsQuery);
foreach(ManagementObject product in allProducts.Get())
{
Console.WriteLine("Product {0} is at version {1}",
product.Properties["Name"].Value,
product.Properties["Version"].Value);
}
「usingSystem.Management」と「System.Management.dll」への参照を追加する必要があります。
特定の製品の情報を取得するには、クエリを絞り込んだり、すべての製品内で製品を検索したりできます。
私はこの解決策を見つけました:
FileVersionInfo inf = FileVersionInfo.GetVersionInfo(Path.Combine(Environment.GetFolderPath(Environment.SpecialFolder.ProgramFiles), "Windows Media Player", "wmplayer.exe"));
if (inf.FileVersion.StartsWith("9"))
{...