2010-09-15 5 views

ответ

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, как я могу это сделать? – dinesh

+0

Указанный ключ не работает в Windows 7, чтобы получить версию медиаплеера – dinesh

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».

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

+0

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

+0

Да Nu-Hin является правильным – dinesh

0

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

FileVersionInfo inf = FileVersionInfo.GetVersionInfo(Path.Combine(Environment.GetFolderPath(Environment.SpecialFolder.ProgramFiles), "Windows Media Player", "wmplayer.exe")); 
     if (inf.FileVersion.StartsWith("9")) 
     {... 
Смежные вопросы