Asp.net

從瀏覽器檢測是否安裝了特定應用程序

  • November 6, 2015

我們有一個高級網頁(ASP.NET、C#)和一個需要安裝在客戶端電腦上才能充分利用網頁的應用程序。該應用程序是一個托盤應用程序,主要有兩個任務。檢測網路伺服器上何時發生某些事件(例如,受邀參加會議,或通知即將舉行的會議)。Trayapp 的另一項任務是使用自定義協議 (trayapp://) 執行一些 ajax 呼叫回伺服器。

我們遇到的一個問題是如何確定應用程序是否安裝在本地機器上。現在使用者必須勾選一個複選框來通知網站應用程序已安裝,並且可以安全地呼叫trayapp:// url 呼叫。

有什麼方法,例如通過 JavaScript 或類似的方法來檢測我們的應用程序是否安裝在本地機器上?

該檢查需要適用於 IE、FF 和 Opera 瀏覽器。

如果您想在瀏覽器中使用 javascript 進行檢測,您可能可以使用集合“navigator.plugins”。它適用於 Firefox、Opera 和 Chrome,但不幸的是不適用於 IE。

更新:在 FF、Opera 和 Chrome 中,您可以像這樣輕鬆測試它:

if (navigator.plugins["Adobe Acrobat"]) {
// do some stuff if it is installed
} else {
// do some other stuff if its not installed
}

更新 #2:如果它是 IE 中的 ActiveX 對象,您可以使用以下方法測試它是否存在:

function getActiveXObject(name){
       try{
           return new ActiveXObject(name);
       }
       catch(err){
           return undefined;
       }
};

IE 的另一種方法類似於 JohnFx 建議的方法(我在這裡找到了它,但沒有測試過):

HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\Windows\Curr entVersion\Internet
Settings\User Agent\Post Platform

安裝客戶端應用程序時,您可以修改瀏覽器配置以在 HTTP 請求中包含另一個請求標頭,然後讓伺服器程式碼查找該標頭,例如使用以下系統資料庫​​項作為受支持的 mime 類型(對於 Internet Explorer)

HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\Windows\CurrentVersion\
                                                     Internet Settings\Accepted Documents

我不確定 Opera 和 FF 是否使用相同的密鑰,但它們可能具有相似的配置選項,但這至少應該讓您走上正軌。

引用自:https://stackoverflow.com/questions/291704