以编程方式检测是否已安装Windows Media Player

时间:2010-10-27 16:34:25

标签: c++ windows installer media-player detection

有人建议如何以编程方式检测是否安装了Windows Media Player?

我知道注册表设置查找,但不要相信它,因为它有点误导(卸载可能不会删除它)。我考虑过只推出一个视频,但是错误可能是因为没有安装Media Player而引起的,所以它也不是决定性的。

理想情况下,我更喜欢可以在我的C ++应用程序和NSIS安装程序中使用的解决方案。但我的C ++应用程序是最重要的,我愿意接受安装程序中的注册表黑客攻击。

3 个答案:

答案 0 :(得分:7)

查看密钥IsInstalled下的HKLM\Software\Microsoft\Active Setup\Installed Components\{22d6f312-b0f6-11d0-94ab-0080c74c7e95}值。安装时为1,否则为0

请参阅Detecting Windows Media Player from an Application

答案 1 :(得分:2)

(您不会说您是否正在检查嵌入应用程序的嵌入式(即OCX)播放器或EXE是否可以从您的应用中进行外部启动。)

如何在应用程序中针对CLSID {22d6f312-b0f6-11d0-94ab-0080c74c7e95} / ProgID“MediaPlayer.MediaPlayer.1”检查CoCreateInstance上的HRESULT? (来自http://technet.microsoft.com/en-us/library/bb676121.aspx的CLSID)

在安装程序中,只需检查HKEY_CLASSES_ROOT \ CLSID {22D6F312-B0F6-11D0-94AB-0080C74C7E95},也可能检查InprocServer32子项中的路径是否存在。

答案 2 :(得分:2)

如果卸载无法删除EXE和注册表项,那么我非常怀疑它是否已卸载任何内容......

因此,我建议您检查HKLM\Software\Microsoft\MediaPlayer\下的注册表,如果存在,请抓取Installation DirectoryInstallation DirectoryLFN的值(默认为%ProgramFiles%\Windows Media Player)并检查该目录中存在wmplayer.exe。如果是,那么您将知道已安装WMP。