2010-10-27 180 views
1

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

我知道注册表设置查找,但不信任它,因为它不仅仅是有点误导(卸载可能无法删除它)。我认为只是启动视频,但错误可能是由于未安装媒体播放器以外的其他内容导致的,因此它也不是确定性的。

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

回答

7

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

请参阅Detecting Windows Media Player from an Application

+0

这太棒了,但它是否记录在任何地方,这个值实际上设置为0在卸载? – 2010-10-27 18:32:44

+0

我曾经测试卸载我的虚拟机中的WMP 9,并且确实将'IsInstalled'设置为'0'。由于MSDN文档的年份是2010年,我敢肯定,这至少在WMP 12之前表现相同。 – Vantomex 2010-10-28 03:15:11

2

(你不说,无论你是检查是否有嵌入(即OCX)的球员在你的应用程序中嵌入或EXE从应用extenally推出。)

如何有关检查的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的子项存在的路径。

2

如果卸载失败,除去两个EXE和注册表项,然后我很怀疑它卸载什么...

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

+0

我喜欢通过注册表中的路径检查安装的应用程序的想法。 +1 – 2010-10-27 17:01:05

相关问题