views:

45

answers:

2

Is this even possible?

I'm embedding Flash inside an IE frame in my application and would like to check if Flash and what version of it is installed.

The application needs to run without admin privileges.

Bonus question: Can I also check if ActiveX controls are enabled in the IE settings?

+1  A: 

The only thing that comes to mind is to examine the file version of the corresponding *.dll or *.ocx file. On my 64-bit system, the file is

C:\Windows\SysWOW64\Macromed\Flash\Flash10b.ocx

As you probably are aware of, many applications can list all installed ActiveX controls. So it is definitely possible to obtain the file name programmatically. And once you have, you can just get the file version.

Hopefully someone else can give you a slightly more enlightened answer soon.

Update

Now that I think about it, there is one key per control in the registry.

Andreas Rejbrand
A: 

The solution is to search for the CLSID of Flash ("{D27CDB6E-AE6D-11cf-96B8-444553540000}") in the registry under HKEY_CLASSES_ROOT\CLSID.

There you can read \InprocServer32 which gives you the OCX. Then get the version via GetFileVersionInfo.

This should work for any COM control.

Axel Gneiting
Then I was more or less right, then! :)
Andreas Rejbrand