2

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

4

3 回答 3

3

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

HKLM
Software\Microsoft\MediaPlayer\PlayerUpgrade
PlayerVersion

PlayerVersion 值将设置为类似“10,0,0,0”的字符串。(请注意,使用逗号而不是句点来分隔数字。)您需要提取第一个数字(主要版本)并确保它是 10 或更高。

我找不到任何关于如何检测 WMP 的官方文档,但上述方法似乎适用于当前版本的 Windows 和 WMP。

请注意,如果安装了 WMP9(Windows XP 附带的版本),当您尝试使用 MediaElement 时,您的应用程序不会崩溃,但控件不会呈现任何内容,并且警告消息将打印到调试器。

如果您的应用程序仅用于 Vista 或更高版本,您无需担心任何这些,因为 Vista 带有 WMP10。

于 2010-09-16T03:05:51.363 回答
2

以下是检查系统上安装的所有产品的方法:

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

您需要添加“使用 System.Management”和对“System.Management.dll”的引用。

要获取特定产品的信息,您可以优化查询或在所有产品中搜索产品。

于 2010-09-15T13:49:23.413 回答
0

我找到了这个解决方案:

FileVersionInfo inf = FileVersionInfo.GetVersionInfo(Path.Combine(Environment.GetFolderPath(Environment.SpecialFolder.ProgramFiles), "Windows Media Player", "wmplayer.exe"));
        if (inf.FileVersion.StartsWith("9"))
        {...
于 2012-12-28T06:51:08.037 回答