Как проверить, какая версия Windows Media Player установлена на компьютере?

2

Насколько я знаю, Windows Media Player 10 является минимальным требованием для работы WPF MediaElement. Что такое достойный способ программно (от .NET) проверить наличие WMP и его версию?

Теги:
wpf
mediaelement
wmp

3 ответа

2
Лучший ответ

Метод, который я использовал в моем установщике, - проверить это значение реестра:

HKLM
Software\Microsoft\MediaPlayer\PlayerUpgrade
PlayerVersion

Значение PlayerVersion будет установлено в строке типа "10,0,0,0". (Обратите внимание, что для разделения номеров используются запятые, а не периоды.) Вам нужно извлечь первое число (основная версия) и убедиться, что оно равно 10 или выше.

Я не смог найти официальную документацию о том, как обнаружить WMP, но вышеописанный метод работает корректно с текущими версиями Windows и WMP.

Обратите внимание, что если WMP9 (версия, поставляемая с Windows XP) установлена, ваше приложение не будет сбой при попытке использовать MediaElement, но элемент управления ничего не отобразит, а предупреждающие сообщения будут напечатаны в отладчике.

Если ваше приложение будет использоваться только с Vista или выше, вам не нужно беспокоиться об этом, потому что Vista поставляется с WMP10.

  • 0
    Если мне нужно проверить, установлен ли Windows Media Player 9 в Xp, а также Windows 7 и Vista, как я могу это сделать?
  • 0
    Указанный ключ не работает в Windows 7, чтобы получить версию медиаплеера
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);
}

Вам нужно добавить "using System.Management" и ссылку на "System.Management.dll".

Чтобы получить информацию о конкретном продукте, вы можете уточнить запрос или выполнить поиск продукта во всех них.

  • 0
    Вызов allProducts.Get () занимает довольно много времени. Кроме того, проигрыватель Windows Media, похоже, не относится к классу WMI Win32_Product, поскольку он является компонентом Windows и не устанавливается через установщик Windows.
  • 0
    да ню-хин прав
0

Я нашел это решение:

FileVersionInfo inf = FileVersionInfo.GetVersionInfo(Path.Combine(Environment.GetFolderPath(Environment.SpecialFolder.ProgramFiles), "Windows Media Player", "wmplayer.exe"));
        if (inf.FileVersion.StartsWith("9"))
        {...

Ещё вопросы

Сообщество Overcoder
Наверх
Меню