發帖後我繼續研究,終於找到了答案。自從我發佈這個問題以來,只有3個觀點,但是我認爲我應該回答我的問題,「Just in Case」中有其他人有這個問題。
我在我的聲明中誤以爲我發佈的代碼沒有找到XenApp插件。事實上,它的確如此。它在Metaframe和XenAppWeb的同時返回一個有效的對象。我在思傑自己的論壇上發佈了這個問題,也沒有答案。
我找到答案的方法是創建一個VS2008項目,我在該項目中添加了一個COM引用到Citrix ICA庫 - 它們都是單獨安裝的。我發現兩者都有一個名爲WFICALib的COM庫,並通過它們查找是否有可能區分它們的東西。我發現的是一個屬性ClientVersion,它對於Metaframe是9.0.xxx,對於XenAppWeb是11.0.xxxx。
BINGO!
從這個我切下面的代碼返回版本在VBScript中的函數:
Function GetVer()
Dim icaObj, Ver
On Error Resume Next
Set icaObj = CreateObject("Citrix.ICAClient")
if err.number = 0 then
if IsObject(icaObj) then
GetVer = icaObj.ClientVersion
else
GetVer = 0
end if
set icaObj = nothing
else
GetVer = 0
end if
End Function
附錄:
由於張貼這個答案,我發現這個腳本在新Internet Explorer(例如IE9)的版本不能可靠地檢測到插件 - 有時可用,而其他時間則不行!我做了什麼來解決這個問題是對腳本轉換爲JScript,而不是JavaScript和新的版本是這樣的:
<script type="text/jscript">
function GetCitrixVersion() {
try {
var icaObj = new ActiveXObject("Citrix.ICAClient");
return icaObj.ClientVersion;
}
catch (e) {
return 0;
}
}
</script>
注意腳本類型是text/JScript中,而不是文本/ JavaScript的。