この質問を投稿した後も調査を続け、ついに答えを見つけました。この質問を投稿して以来、この質問に対するビューは 3 回しかありませんが、無関心にもかかわらず、「念のため」他の誰かがこの問題を抱えているという質問に答える必要があると思います。
私が投稿したコードが XenApp プラグインを見つけられなかったという質問の私の声明は間違っていました。実際、そうです。Metaframe と XenAppWeb の両方が存在する場合に有効なオブジェクトを返します。この質問を Citrix 自身のフォーラムに投稿しましたが、そこにも回答がありません。
答えを見つけるために私がしたことは、Citrix ICA ライブラリへの COM 参照を追加した VS2008 プロジェクトを作成することでした。両方とも WFICALib という名前の COM ライブラリを持っていることがわかり、両方を検索して、それらを区別する何かがあるかどうかを確認しました。私が見つけたのは、Metaframe の場合は 9.0.xxx、XenAppWeb の場合は 11.0.xxxx の ClientVersion プロパティでした。
ビンゴ!
これから、次のコードを切り取り、バージョンを 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 など) のこのスクリプトがプラグインを確実に検出していないことがわかりました。この問題を解決するために私がしたことは、スクリプトを JavaScript ではなく JScript に切り替えることでした。新しいバージョンは次のようになります。
<script type="text/jscript">
function GetCitrixVersion() {
try {
var icaObj = new ActiveXObject("Citrix.ICAClient");
return icaObj.ClientVersion;
}
catch (e) {
return 0;
}
}
</script>
スクリプト タイプは、text/javascript ではなく、text/ jscriptであることに注意してください。