以编程方式检测Windows Media Player是否已安装
任何人对如何以编程方式检测Windows Media Player是否安装有任何建议?以编程方式检测Windows Media Player是否已安装
我知道注册表设置查找,但不信任它,因为它不仅仅是有点误导(卸载可能无法删除它)。我认为只是启动视频,但错误可能是由于未安装媒体播放器以外的其他内容导致的,因此它也不是确定性的。
理想情况下,我更喜欢可以从我的C++应用程序和我的NSIS安装程序中使用的解决方案。但我的C++应用程序是最重要的,我愿意在安装程序中使用注册表黑客。
查看密钥HKLM\Software\Microsoft\Active Setup\Installed Components\{22d6f312-b0f6-11d0-94ab-0080c74c7e95}
下的IsInstalled
值。如果已安装,则为1
,否则为0
。
(你不说,无论你是检查是否有嵌入(即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的子项存在的路径。
如果卸载失败,除去两个EXE和注册表项,然后我很怀疑它卸载什么...
所以,我建议你检查HKLM\Software\Microsoft\MediaPlayer\
下的注册表,如果它存在,抢值的Installation Directory
或Installation DirectoryLFN
(默认为%ProgramFiles%\Windows Media Player
),并检查该目录中是否存在wmplayer.exe
。如果确实如此,那么您将知道WMP已安装。
我喜欢通过注册表中的路径检查安装的应用程序的想法。 +1 – 2010-10-27 17:01:05
这太棒了,但它是否记录在任何地方,这个值实际上设置为0在卸载? – 2010-10-27 18:32:44
我曾经测试卸载我的虚拟机中的WMP 9,并且确实将'IsInstalled'设置为'0'。由于MSDN文档的年份是2010年,我敢肯定,这至少在WMP 12之前表现相同。 – Vantomex 2010-10-28 03:15:11