hack のためのネタ帳, etc,,,

状況

イントラネットのとあるサイトを IE Mode かつ Kiosk で表示させたい。
ただし、以下 3 点も問題がある。

1. 当該クライアントは、電源を強制切断するようになっているため、タブの復元が機能してしまい、
ページの復元
Microsoft Edge が予期せずに閉じられました。
[復元]
ってポップアップが出てしまい、毎回これを閉じる操作が必要になる。

2. IE Mode で開くたびに、
Internet Explorer モードになっています。ほとんどのページは、Microsoft Edge でより適切に機能します。 [Microsoft Edge で開く]
英語だと、
You're in Internet Explorer mode. Most pages work better in Microsoft Edge. [Leave]
ってポップアップが出るので、やはり毎回これを閉じる操作が必要になる。

3. 現時点の IE Mode は Edge 上の UI から手動で設定する方法だと有効期限が 30 日間に設定されてしまい、これを変更する手段が提供されていない。
このため、30 日後に勝手に expire してしまい、再度設定が必要になるのだが、これは kiosk 端末という性質上、管理が面倒臭過ぎてやってられない。

解法

タブの復元を無効化

まず問題点 1. について
Edge タブ復元 無効」でググると、以下のページが見つかった。
幾つか方法があるようだが、以下のレジストリを設定しておくのが簡単だった。

HideRestoreDialogDisable.reg

Windows Registry Editor Version 5.00

[HKEY_LOCAL_MACHINE\SOFTWARE\Policies\Microsoft\Edge]
"HideRestoreDialogEnabled"=dword:00000001 

IE モードで開く設定、及び Edge 推奨の抑制

Enterprise Mode Site List による解決
問題点 2.と 3. についてだが、これは難儀した。
最終的には「エンタープライズ モード サイト リスト」を利用することで解決できたのだが、グループポリシーから設定する方法はなぜかうまく行かなかったのでレジストリから設定した。
Edge を推奨するポップアップは消せないというコメントもあったが、「エンタープライズ モード サイト リスト」を設定すると、少なくとも Windows 10 Pro 22H2 OS ビルド 19045.4046 では無効化出来た。

具体的なレジストリは以下

EnterpriseModeSiteList.reg

Windows Registry Editor Version 5.00

[HKEY_LOCAL_MACHINE\SOFTWARE\Policies\Microsoft\Edge]
"InternetExplorerIntegrationLevel"=dword:00000001
"InternetExplorerIntegrationSiteList"="file:///C:/Users/Public/sites.xml"

InternetExplorerIntegrationSiteList に与えるパスは file:///... のような URI でも C:\Users\... のような Windows 形式の PATH でもどちらでも大丈夫だった。

エンタープライズモードサイト一覧の XML は以下のような感じ。

sites.xml

<site-list version="1">
  <site url="192.168.1.1">
    <compat-mode>Default</compat-mode>
    <open-in>IE11</open-in>
  </site>
  <site url="192.168.1.2/foo/bar.html">
    <compat-mode>Default</compat-mode>
    <open-in>IE11</open-in>
  </site>
</site-list>

site 要素の url 属性は、Edge に読み込まれた後、先頭に "*://" が追加されるので、URL の schema から root path まで(http:// や https://)の部分は省く必要があった。

エンタープライズモードサイト一覧の設定及び XML の更新後は、Edge で以下の設定ページを開いて「強制的に更新」する必要があった。
  • edge://compat/enterprise

XML の手書きが面倒なら、Enterprise Site List Manager (schema v.2) をインストールしても良い。
これをインストールすると、「Enterprise Mode Site List Manager」というスタンドアロンのアプリが利用可能となる他、

EnterpriseModeSiteListManager.reg

Windows Registry Editor Version 5.00

[HKEY_LOCAL_MACHINE\SOFTWARE\Policies\Microsoft\Edge]
"EnterpriseModeSiteListManagerAllowed"=dword:00000001 
を設定することで、Edge 用のプラグインとしても機能する(「Microsoft Edge の互換性」 chrome://compat/enterprise 以下にある「エンタープライズ サイト リスト マネージャー」 edge://compat/sitelistmanager から利用可能)。
ただし、アプリや Edge 上のエディタから編集した内容は、直接 Edge から参照出来ないようなので、XML に吐き出したものを、前述のレジストリから参照してやる必要があるようだった。

因みにアプリ版及びプラグイン版による編集結果の保存場所は不明。
プラグイン版から XML をプレビューすると blob:edge://compat/${UUID} みたいな URI から参照されるが、保存毎に UUID 変わる。
この URI は Edge のプロセスが生きている限りは生きているようだが、プロセスを再起動するとリンク切れになる。

2024-05-17: 追記
なお、ローカルに保存されているファイルを IE Mode で開きたい場合、
上記の sites.xml に設定しようとしても、
  • file:///C:/Users/... → *://file/C:/Users/...
  • C:/Users/... → *://C/Users/...
  • /C:/Users/... → *://C/Users/...
  • ///C:/Users/... → *://C/Users/...
のように読み込み時に中途半端な変換が行われてしまい上手く設定出来ない。

起動時であれば、以下のレジストリ

Windows Registry Editor Version 5.00

[HKEY_LOCAL_MACHINE\SOFTWARE\Policies\Microsoft\Edge]
"InternetExplorerIntegrationLevel"=dword:00000001
"InternetExplorerIntegrationLocalFileAllowed"=dword:00000001
を設定した上で、msedge.exe のコマンドラインオプションとして --ie-mode-file-url と URL を与える IE Mode で開けはするるが、この方法で開くと、
このタブに示されているすべてのサイトは、Internet Explorer モードで開かれています。
というポップアップが出てしまう。

「設定」→「既定のブラウザー」 (edge://settings/defaultBrowser) から手動で設定すると 30 日 expire の制約が回避出来ない等、完全に解決可能な方法が見つからなかった。
/2024-05-17: 追記

参考:
別解: IE Mode の強制
コマンドラインオプションから
'C:\Program Files (x86)\Microsoft\Edge\Application\msedge.exe' --ie-mode-force --internet-explorer-integration=iemode $URL
みたいにすると、Edge 全体が IE Mode になって URL が開かれるが、
既に IE Mode ではない Edge のプロセスがあると、非 IE Mode で開かれてしまう。
オプションとして --new-window を与えると別のウインドウは開くが、既に開いている Edge の Mode に引きずられて駄目だった。

また、
サポートされてないコマンドライン フラグ: --ie-mode-force を使用しています。これにより、安定性およびセキュリティに関するリスクが生じます。
とか
このタブに示されているすべての際とは、Internet Explorer モードで開かれています。
といったポップアップも表示される。
一応、前者は、Kiosk モードにすると消えはするが、後者は消えないので、ポップアップ邪魔問題は解決しない。

参考:

Kiosk モード

コマンドラインオプションとして
  • --kiosk
を与えると Kiosk モードになる。
更に
  • --edge-kiosk-type={fullscreen|public-browsing}
で、全画面モードとパブリックブラウジングモードの選択ができる。多分これはどちらも Private モード。
なお、--edge-kiosk-type が指定されてない場合は、全画面だが Private が有効になっているかどうかは不明。

参考:

コメントをかく


「http://」を含む投稿は禁止されています。

利用規約をご確認のうえご記入下さい

Wiki内検索

フリーエリア

管理人/副管理人のみ編集できます