2009-08-24 6 views
1

Macromedia Flash Player가 WMI win32_product 테이블에없는 이유는 무엇입니까? Flash Player는 쿼리를 실행중인 컴퓨터에 설치됩니다.WMI win32_product 테이블에서 Flash Player를 찾을 수 없습니다.

Select * From win32_product where name like '%Flash%' 

설치된 플래시 플레이어의 버전을 얻을 수있는 다른 방법이 있나요 :

나는 다음과 같은 쿼리를 실행하기 위해 노력하고있어. 이 프로젝트는 C#으로 개발되었습니다.

+0

사용중인 언어는 무엇입니까? – Helen

+0

언어는 C#입니다. –

답변

1

Win32_Product 클래스는 Windows Installer에 의해 설치된 제품만을 나타냅니다. Flash Player에서 다른 설치 서비스를 사용하는 것처럼 보입니다. 여기

는 Flash Player ActiveX 컨트롤의 존재 및 버전 (IE 용 플래시 플레이어)를 결정하는 방법은 다음과 같습니다

  1. ShockwaveFlash.ShockwaveFlash의 ProgID에 해당하는 System.Type 객체를 취득하십시오. 가져 오지 못하면 Flash Player가 설치되지 않습니다. 성공하면 2 단계로 이동하십시오.
  2. Type 개체의 인스턴스를 만듭니다.
  3. "$ version"매개 변수를 사용하여 얻은 개체의 GetVariable 메서드를 호출하십시오. 이렇게하면 "OS major, minor, release, build"형식의 Flash Player 버전 문자열이 제공됩니다. "WIN 10,0,22,87"

이런 식으로 뭔가 (면책 조항 : 나는 잘 C 번호를 모르는, 그래서이 코드는 절름발이 수 있음) :이 방법을 사용하면 x86 용 응용 프로그램을 구축해야한다는

Type tFlash = Type.GetTypeFromProgID("ShockwaveFlash.ShockwaveFlash"); 
if (tFlash != null) 
{ 
    object FlashPlayer = Activator.CreateInstance(tFlash); 
    string version = (string) tFlash.InvokeMember("GetVariable", 
     System.Reflection.BindingFlags.InvokeMethod, 
     null, FlashPlayer, new Object[] {"$version"}); 

    Console.WriteLine(version); 
} 
else 
{ 
    Console.WriteLine("Flash Player is not installed."); 
} 

주 플랫폼으로 변환 할 수 있습니다. Flash Player는 현재 32 비트 전용이므로 64 비트 코드에서 ActiveX 객체와 상호 작용할 수 없습니다.

관련 문제