1

Citrix Metaframe から XenApp にアップグレードしています。XenApp Web プラグイン v11.0 がクライアント マシンにインストールされているかどうかを、クライアント マシンがログインのために Web サーバーに接続するときにプログラムで検出する方法があるかどうかを知る必要があります。 ASP スクリプトで ICA クライアントのインスタンス化を試みることにより、Metaframe Web クライアントをダウンロード/インストールとして提供するかどうかを決定するために結果を使用しました。

この検出の現在のコードは次のとおりです。

Set icaObj = CreateObject("Citrix.ICAClient")

上記のコードでは、XenApp プラグインが見つかりません。

4

1 に答える 1

4

この質問を投稿した後も調査を続け、ついに答えを見つけました。この質問を投稿して以来、この質問に対するビューは 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であることに注意してください。

于 2011-07-06T23:01:27.730 に答える