任何人對如何以編程方式檢測Windows Media Player是否安裝有任何建議?以編程方式檢測Windows Media Player是否已安裝
我知道註冊表設置查找,但不信任它,因爲它不僅僅是有點誤導(卸載可能無法刪除它)。我認爲只是啓動視頻,但錯誤可能是由於未安裝媒體播放器以外的其他內容導致的,因此它也不是確定性的。
理想情況下,我更喜歡可以從我的C++應用程序和我的NSIS安裝程序中使用的解決方案。但我的C++應用程序是最重要的,我願意在安裝程序中使用註冊表黑客。
任何人對如何以編程方式檢測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