如何检查计算机上安装的Windows Media Player版本?

据我所知,Windows Media Player 10是WPF MediaElement工作的最低要求。 以编程方式(从.NET)检查WMP是否存在及其版本的正确方法是什么?

我在安装程序中使用的方法是检查此注册表值:

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); } 

您需要添加“using System.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")) {...