检测是否从C ++可执行文件安装了IE Flash Player

时间:2010-12-03 21:41:35

标签: c++ flash internet-explorer

我有一个用C ++编写的Windows应用程序,我需要检测是否为IE安装了Flash。最好的方法是什么?

3 个答案:

答案 0 :(得分:1)

有几种方法可以做到这一点。一种方法是检查二进制文件是否存在:

  1. 使用SHGetSpecialFolderPath和CSIDL_SYSTEM获取system32目录的路径。
  2. 使用FindFirst/FindNextFile查看是否存在windows \ system32 \ macromed \ flash,特别是“flash ???。ocx”形式的文件。请注意,NPSWF32.dll是Flash的Netscape插件(FF,Chrome)版本,因此请确保查找ocx。
  3. 您也可以检查注册表中的内容。

答案 1 :(得分:0)

http://www.delphipages.com/forum/showthread.php?t=61736 此线程与您的问题相关。在C ++中也一样。

答案 2 :(得分:0)

我在这里检查它。

我们将在注册表中寻找。如果用户执行卸载,则会删除这些值。

#define FLASH_KEYDIR _T("Software\\Macromedia\\FlashPlayerActiveX")
#define FLASH_KEY _T("PlayerPath")
#define FLASHPLUGIN_KEYDIR _T("Software\\Macromedia\\FlashPlayerPlugin")
#define FLASHPLUGIN_KEY _T("PlayerPath")

两种情况下的PlayerPath都包含ocx / dll的完整路径,例如:对于ActiveX(IE)版本的播放器,它看起来像C:\Windows\system32\Macromed\Flash\Flash32_11_3_300_257.ocx,对于播放器的插件版本,它看起来像C:\Windows\system32\Macromed\Flash\NPSWF32_11_3_300_257.dll

所以我们做的是a)检查注册表值,如果存在,则b)查看文件是否存在。也许这只适用于较新的Flash包。我不确定这段代码如何处理旧的Flash安装。