HTML アプリケーションの場所オブジェクトのプロパティを読み取るときにアクセス許可が拒否されたエラー

警告

廃止され、サポート対象外となった Internet Explorer 11 デスクトップ アプリケーションは、特定のバージョンの Windows 10 で Microsoft Edge の更新プログラムを通じて完全に無効になります。 詳細については、「Internet Explorer 11 デスクトップ アプリの廃止に関する FAQ」をご覧ください。

この記事では、HTML アプリケーション (HTA) 内にある Location オブジェクトのプロパティを読み取った場合に発生する アクセス許可拒否 エラー メッセージを解決するための多くの方法について説明します。

元のバージョン:インターネット エクスプローラー
元の KB 番号: 816885

現象

HTML アプリケーション (HTA) 内にある Location オブジェクトの特定のプロパティを読み取ると、 アクセス許可が拒否された エラー メッセージが表示されることがあります。 Location オブジェクトの関連プロパティは次のとおりです。

  • Location.href
  • Location.hostname
  • Location.reload

注:

このエラーは、Microsoft インターネット エクスプローラーのローカル エリア ネットワーク (LAN) 設定で自動構成スクリプトを使用する場合にのみ発生することがあります。

デバッグ ツールがコンピューターにインストールされている場合は、次のエラー メッセージが表示される場合があります。

ランタイム エラーが発生しました。 デバッグしますか? 行 12 エラー: アクセス許可が拒否されました

デバッグ ツールがコンピューターにインストールされていない場合は、次のエラー メッセージが表示される場合があります。

このページのスクリプトでエラーが発生しました。 行: 13 文字: 2 エラー: アクセス許可が拒否されました コード: 0 URL: http://WebServer/FileName.hta このページでスクリプトを引き続き実行しますか?

注:

この問題は、自動構成スクリプトに DIRECT 値がある場合にのみ発生する可能性があります。

解決方法

この問題を解決するには、次のいずれかの方法を使用します。

注:

次のメソッドは、この記事の「動作を再現する手順」セクションで説明されているサンプルに基づいています。 したがって、これらのメソッドのコードとファイル名は、コードとファイル名と異なる場合があります。

  • 自動構成スクリプトを使用する代わりに、インターネット エクスプローラーのプロキシ サーバー設定でプロキシ サーバーをハード コーディングし、F5 キーを押してブラウザーで HTA を更新します。
  • HTA へのパスにアクセスするには、完全修飾ドメイン名 (FQDN) ではなくホスト名を使用します。
  • IP アドレスを使用して HTA にアクセスします。
  • アクセスする Web サイトを [信頼済み] ゾーンまたは [制限付きゾーン] に追加します。
  • コードで Location オブジェクトを使用しないでください。
  • [インターネット エクスプローラーのセキュリティ設定] の [プロキシ サーバーをバイパスするすべてのサイトをチェック含める] ボックスをオフにする場合にクリックします。

動作の再現手順

  1. Internet Explorer を起動します。

  2. [ツール] メニューの [インターネット オプション] をクリックします。

  3. [Connections] タブで、[LAN 設定] をクリックします。

  4. [ローカル エリア ネットワーク (LAN) 設定] ダイアログ ボックスで、[自動構成スクリプトの使用] チェック ボックスをクリックして選択します。 他のチェックボックスが選択されていないことを確認します。

  5. [ アドレス ] ボックスに、自動構成スクリプトへのパスを入力します。

  6. メモ帳を使用して、Default.hta という名前のテキスト ファイルを作成します。

  7. Default.hta ファイルに次の HTML コードを追加します。

    <html>
        <head>
            <title>HTA Location.href bug reproduction</title>
            <HTA:APPLICATION ID="oBugRepro" APPLICATIONNAME="BugRepro">
                <SCRIPT LANGUAGE="JavaScript">
                    function ShowFrame() {
                        var strLocation;
                        strLocation = top.fraTabs.location.href;
                    }
                </SCRIPT>
        </head>
        <frameset id="fstWorkAreaMain" name="fstWorkAreaMain" rows="40%,60%">
            <frame src="about:blank" id="fraTabs" name="fraTabs" APPLICATION="yes">
                <frame src="Main.htm" id="fraMain" NAME="fraMain" APPLICATION="yes">
        </frameset>
    </html>
    
  8. メモ帳を使用して、Main.htm という名前のテキスト ファイルを作成します。

  9. Main.htm ファイルに次の HTML コードを追加します。

    <HTML>
        <BODY style="background-color:gainsboro">
            <P>Main frame</P>
            <input id="cmdButton" type="button" onclick="top.ShowFrame()"
                value="Click me to reproduce the behavior"></input>
        </BODY>
    </HTML>
    
  10. Default.hta と Main.htm の 2 つのファイルを、Web サーバー上の HTARepro という名前の仮想ディレクトリに配置します。

  11. HTARepro 仮想ディレクトリの内容への匿名アクセスが有効になっていることを確認します。

  12. コマンド プロンプトで次のコマンドを入力します。

    mshta.exe http://WebServer/HTARepro/Default.hta
    

    注:

    を、使用している Web サーバーの FQDN に置き換えます WebServer

  13. HTA アプリケーションで、[クリックして 動作を再現する] をクリックします。 この記事の「現象」セクションに記載されているエラー メッセージのいずれかが表示されます。

関連情報

詳細については、「 HTML アプリケーションの概要 (HDA)」を参照してください。