リモート デスクトップ Web アクセスを使用してリモート アプリケーションに接続すると、[接続済み] アイコンが通知領域に表示されない

この記事では、リモート デスクトップ Web アクセスを使用してリモート アプリケーションに接続するときに、[接続済み] アイコンが通知領域に表示されない問題の回避策について説明します。

適用対象: Windows Server 2012 R2
元の KB 番号: 977507

現象

Windows Server 2008 R2 を実行しているコンピューターでリモート デスクトップ Web アクセス (RD Web Access) を使用してリモート アプリケーションに接続すると、通知領域に [接続済み ] アイコンは表示されません。

注:

リモート アプリケーションを初めて実行すると、通知領域に [接続済み ] アイコンが表示されます。

WebSSO (Web シングル サインオン) は期待どおりに機能せず、Windows Server 2008 R2 のリモート デスクトップ Web アクセスを介して公開された RemoteApps 経由で起動されたアプリケーションで資格情報の "ダブル プロンプト" が発生します。

原因

この問題は、クライアント コンピューターに期限切れでない Cookie が複数存在する場合に発生します。

回避策

この問題を回避するには、Cookie を削除します。

Windows Internet エクスプローラー 8 で Cookie を削除するには、次の手順に従います。

  1. [スタート] をクリックし、[コントロール パネル] をクリックし、[ネットワークとインターネット Connections] をクリックし、[インターネット オプション] をクリックします。
  2. [ 全般 ] タブで、[ 削除] をクリックします。
  3. Cookie のみを削除するには、[Cookie チェック] ボックスをクリックして選択し、クリックして他のすべてのチェック ボックスをオフにします。
  4. [削除] をクリックします。 Cookie を削除する以外のもう 1 つのオプションは、RD Web Access サーバー上のスクリプト ファイル C:\windows\Web\RDWeb\Pages\renderscripts.js を変更することです。

スクリプト ファイルの C:\windows\Web\RDWeb\Pages\renderscripts.js を変更するには、次の手順に従います。

  1. ローカルの Administrators グループのメンバーとしてリモート デスクトップ Web アクセス サーバーにログインします。

  2. 次の jscript ファイルを参照し、右クリックして [編集] を選択します。

    C:\windows\Web\RDWeb\Pages\renderscripts.js

  3. その jscript ファイルで次の関数の実装を見つけます。 関数 getCookieContents(strNameOfCookie)

  4. jscript ファイル内のコードを次のコードと一致するように変更します。

    Renderscripts.js ファイル内の既存のコード:

    function getCookieContents(strNameOfCookie)
    {
        var objCookie;
        var objCookieName;
        var objCookieContents = null;
    
        if ( strNameOfCookie != null &&
        strNameOfCookie != "" &&
        document.cookie.length > 0 )
        {
            var objCookies = document.cookie.split(";");
            for (var iIndex = 0; iIndex < objCookies.length; iIndex++)
            {
                objCookie = objCookies[iIndex];
                objCookieName = objCookie.substring(0, strNameOfCookie.length);
            }
        }
    }
    

    Renderscripts.js ファイル内の上記のセクションを次のように変更します。

    // Add a function called trim as a method of the prototype
    // object of the String constructor.
    String.prototype.trim = function()
    {
        // Use a regular expression to replace leading and trailing
        // spaces with the empty string
        return this.replace(/(^\s*)|(\s*$)/g, "");
    }
    // End of the new-added function
    
    function getCookieContents(strNameOfCookie)
    {
        var objCookie;
        var objCookieName;
        var objCookieContents = null;
    
        if ( strNameOfCookie != null &&
        strNameOfCookie != "" &&
        document.cookie.length > 0 )
        {
            var objCookies = document.cookie.split(";");
            for (var iIndex = 0; iIndex < objCookies.length; iIndex++)
            {
                objCookie = objCookies[iIndex];
                objCookie = objCookie.trim(); //Calling the new-added function
                objCookieName = objCookie.substring(0, strNameOfCookie.length);
            }
        }
    }
    

問題が解決されたかどうかの確認

問題が解決されたかどうかを確認します。 問題が修正された場合は、このセクションを完了します。 問題が解決しない場合は、 サポートにお問い合わせください

詳細

この問題は、次の条件に該当する場合に発生する可能性があります。

  • リモート デスクトップ Web アクセスは、親ドメインを持つサブドメイン内にあります。
  • 親ドメインまたはその他のサブドメインは、ドメインが親ドメイン レベルに設定されている Cookie を書き込みます。 この動作は、すべてのサブドメイン間で Cookie を共有します。

リモート デスクトップ Web アクセスが親ドメイン レベルに配置されている場合は、接続アイコンが通知領域に表示されます。 さらに、シングル サインオン (SSO) 機能、リモート アプリケーション、デスクトップ接続は、リモート アプリケーションに接続するときに想定どおりに機能します。

さらに、これは、Web サーバーによってクライアントに返される Cookie に追加の Cookie 情報が含まれている場合に発生する可能性があります。