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

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

我知道registry设置查找,但不要相信它,因为它不仅仅是一个有点误导(卸载可能不会删除它)。 我曾经考虑过只是推出一个video,但是一个错误可能是由于没有安装媒体播放器以外的东西造成的,所以它也不是最终的结果。

理想情况下,我更喜欢可以从我的C ++应用程序和我的NSIS安装程序中使用的解决scheme。 但我的C ++应用程序是最重要的,我愿意与安装程序中的registry黑客。

Solutions Collecting From Web of "以编程方式检测是否安装了Windows Media Player"

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

请参阅从应用程序中检测Windows Media Player 。

(你不会说你是否正在检查一个可嵌入的(即OCX)播放器来嵌入你的应用程序或EXE从你的应用程序exexally启动。

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

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

如果卸载无法删除EXE和注册表项,然后我非常怀疑它卸载任何东西…

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