2010-10-27 182 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

相關問題