検証台 / windows & browser

Web ページから Windows のファイルへ飛ばす

素の file:// リンクは、いまのブラウザではクリックしても何も起きません。 それを開通させる手段は13通りあり、必要な仕込みも効くブラウザも違います。 下のパスを自分の環境のものに書き換えると、全リンクがその場で生成されます。実機で1つずつ押して確かめてください。

結果 動いた 0 動かない 0 未確認 13

測っているのは別々の2つのこと

軸 1

その URL 自体が Windows で機能するか

各カードのコピーを押し、エクスプローラーのアドレスバーか Win + R に貼って実行します。ここが通れば、パスの書式・プロトコルの登録状態は正しいと確定できます。

軸 2

Web ページからのクリックで動くか

各カードの開くを押します。既定でブロックされているのはこちらだけです。ポリシーや独自プロトコルで開通させる対象は、常に軸2のほうです。

軸2 を正しく測るには、このページの置き場所が重要です。 ブラウザの許可はページのゾーンで決まります。claude.ai 上で開いている場合はインターネットゾーンかつ iframe 内なので、軸2 はほぼ全滅します(それが正常な結果です)。 軸2 を測るには、この HTML を Windows 機のローカルに保存して開くか、社内イントラのサーバーに置いて「ローカル イントラネット」ゾーンとして開いてください。
A

端末に何も入れない方法

配布作業がいらない代わりに、効くブラウザが限られるか、エクスプローラーでファイルを選択状態にはできません。

A-1

file:// 直リンク — ファイルを指す

追加なし既定でブロック

https ページから file:// への遷移は Chrome・Edge・Firefox すべてで禁止されています。まずこれが本当に動かないことを確認するのが出発点です。

開く

期待クリックしても無反応。Edge では about:blank#blocked、Chrome の DevTools には Not allowed to load local resource が出ます。アドレスバーに貼れば開きます。

A-1′

file:// 直リンク — フォルダを指す

追加なし既定でブロック

フォルダを指すと、ブロックが解除された環境ではエクスプローラーのウィンドウが開きます。A-2 のポリシーを入れたあとの動作確認はこちらで行うのが確実です。

開く

期待既定では無反応。ポリシー適用後はエクスプローラーがこのフォルダを開きます。ブラウザ内にディレクトリ一覧が出た場合はエクスプローラー連携が効いていない状態です。

A-2

Edge の IntranetFileLinksEnabled ポリシー

要 GPOEdge 95+開発ゼロ

Edge 95 以降にある「イントラネット ゾーンの file URL リンクをエクスプローラーで開くことを許可する」専用ポリシーです。現行の 152 系でも非推奨化されていません。条件は2つ——ページが「ローカル イントラネット」ゾーンにあることと、リンク先が file:// であること。GPO / Intune で配れるので、端末に独自バイナリを置く必要がありません。

レジストリで直接入れる場合

          

確認適用後、edge://policyIntranetFileLinksEnabled が出ていること。そのうえで A-1′ のリンクをイントラ配置のページから押します。

注意Edge 130 では URL パーサの変更で file リンクが壊れた事例があり、--disable-features=StandardCompliantNonSpecialSchemeURLParsing が回避策として案内されました。バージョン依存で挙動が変わる前提で運用してください。

A-3

Firefox の capability.policy

要 prefs / GPOFirefox のみ

Firefox には古くからある権限ポリシーがあり、指定したオリジンだけ file:// リンクを許可できます。policies.json や GPO からも配布できます。

user.js / autoconfig

          

確認about:config に3つの pref が入っていること。効かない場合は privacy.file_unique_originfalse にする必要があるという報告があります。

A-4

search-ms: でエクスプローラーの検索を開く

追加なし全ブラウザ遮断され得る

インストールなしでエクスプローラー自体を起動できる、あまり知られていない手です。ファイルを選択状態にはできませんが、「機番で検索した結果一覧」を出せるので、突合キーが決まっている用途とは相性がいい。

開く

期待「エクスプローラーを開きますか?」の確認ダイアログ → エクスプローラーが検索結果を表示。

注意search-ms: はマルウェアの初期侵入に悪用された履歴があり、EDR やプロキシで遮断されている環境があります。導入前に実機確認が必須です。

A-5

Office の URI スキームで直接開く

追加なし要 Office全ブラウザ第2候補

Office がインストール済みなら、追加設定なしで使えるプロトコルがすでにあります。ofe は編集モード、ofv は閲覧モード。エクスプローラーは開きませんが「その文書を開きたい」だけならこれが最短です。

GPO が触れない環境での第2候補がこれです。スキームは Office のインストール時に登録されるので、配布作業も設定変更も EDR の例外申請も要りません。異常コード表のような Excel 原本が主なら、コピペより明確に体験が良くなります。

開く
開く

期待拡張子が対応していれば Excel / Word が起動。上のパスは .xlsx / .docx の実ファイルに差し替えて試してください。ms-powerpoint: onenote: ms-access: も同じ形式です。

弱点PDF には効きません。Acrobat は既定で URI スキームを登録しないためです。原本の形式によって使えたり使えなかったりするのが、この方式の唯一にして最大の弱点です。PDF が混ざるなら A-6 のコピペを併用してください。

A-6

パスをクリップボードにコピーさせる

追加なし全ブラウザ壊れない

ブラウザ・OS・ポリシーに一切依存せず壊れない唯一の方法です。他の方式を採用する場合も、効かない端末のためのフォールバックとして併設する価値が高い。貼り先はエクスプローラーのアドレスバーか Win + R

期待クリップボードに入る。ドライブレターは人によって違うので、必ず UNC(\\server\share)で持つこと。

A-7

.url ショートカットをダウンロードさせる

追加なしAV に遮断されやすい

サーバー側で生成した .url ファイルを返し、ダブルクリックで開かせる方式です。中身はただの ini です。

shortcut.url の中身

          

確認メモ帳に貼って test.url として保存し、ダブルクリック。

注意.url は SmartScreen 回避などの攻撃に使われた実績があり、AV・ブラウザ・メールゲートウェイで止められがちです。.lnk 生成はさらに危険側で、推奨しません。

B

端末に仕込む方法

配布の手間を払う代わりに、全ブラウザで「フォルダが開いて対象ファイルが選択されている」状態まで到達できます。

B-1

独自 URL プロトコル + explorer /select

要レジストリ配布全ブラウザ選択状態まで到達

求めていた挙動そのものに到達できる王道です。エクスプローラーでファイルを選択状態にするコマンドはこれ一つ。カンマの直後にスペースを入れないのが要点です。

まず素の挙動を確認(cmd に貼る)

          

これを Web から呼べるようにするため、スキームをレジストリに登録します。%1 にはスキーム込みの URL が渡るので、explorer.exe を command に直接書いてはいけません。必ず小さなラッパーを挟みます。下は追加のコンパイラなしで試せる VBScript 版です。

1. C:\ProgramData\openpath\open.vbs として保存

          
2. openpath.reg として保存して実行

          
開く

期待「このサイトが openpath を開こうとしています」の確認 → フォルダが開き、対象ファイルが選択されている。確認ダイアログは Chrome / Edge の AutoLaunchProtocolsFromOrigins ポリシーで特定オリジンだけ省略できます。

注意%1 を無検証で渡すのは典型的な引数インジェクション(RCE)経路です。上の VBS には許可ルートのホワイトリストと .. の拒否を入れてありますが、本番では allowRoot を実際の共有パスに変え、署名済み exe に置き換えてください。管理環境では .vbs 自体が ASR ルールで止められることもあります。

B-2

ローカル常駐エージェント(127.0.0.1

要常駐アプリLNA プロンプトUI 自由

端末に小さな HTTP サーバーを常駐させ、ページから fetch して explorer /select を叩かせます。開く前に存在確認する、候補を複数返すといった UI を作れるのが利点です。

期待エージェント未導入なら失敗します。ここで見たいのは失敗の種類です。Chrome 142(2025年10月28日)で Local Network Access が有効化され、公開オリジンからループバックへのリクエストは権限プロンプト付きになりました。拒否されると黙って失敗します。

注意トークン認証と Origin 検証を必ず入れること。無認証で開けると、社内の任意のページから端末を操作できてしまいます。

B-3

ブラウザ拡張の強制インストール

要拡張配布Chromium 系

「Enable local file links」のような既存拡張を ExtensionInstallForcelist で配る、または自作拡張+Native Messaging Host で explorer /select を叩きます。既存拡張は「ファイル URL へのアクセスを許可」のチェックが必要で、これを GPO で強制するのが難しいという報告があります。自作するなら B-1 のほうが素直です。

確認edge://extensions / chrome://extensions で当該拡張の「ファイルの URL へのアクセスを許可する」が有効になっているか。

B-4

デスクトップアプリ化(Electron / Tauri)

要アプリ配布制約から解放

Web アプリを薄いガワで包めば shell.showItemInFolder(path) 一行で解決します。ブラウザの制約から完全に降りられる代わりに、配布と更新の運びが増えます。

Electron メインプロセス

          
C

設計そのものを変える方法

ブラウザとの戦いから降りられる代わりに、ファイルの置き場所や運用そのものを変える話になります。既存の共有フォルダをそのまま使い続けたいなら、コストが釣り合わないことが多いグループです。

C-1

バックエンド経由で HTTP 配信する

端末設定不要全ブラウザネットワーク要件が重い

バックエンドが共有フォルダを SMB マウントして読み出し、https://…/files?rel=… として流す。ファイルはコピーも移動もされず、共有フォルダに置かれたままです。すると普通のリンクになり、ブラウザ制約・端末設定・OS 依存がすべて消えます。

FastAPI での中継(実装量の目安)

          

本題コード量は少ないのに、13手法で一番大変なのがこれです。重いのは実装ではなくその周辺——バックエンドがファイルサーバーに到達できるか(クラウド設置なら VPN や専用線)、SMB の認証情報をサーバーに持たせられるか、そして共有フォルダの AD 権限が無効化される点。全員がサービスアカウントの権限で読むことになるため、「誰がどのファイルを見てよいか」をアプリ側で作り直す必要があります。

向く場面ファイルをアプリの管理下に置く設計(アップロードして保管する)なら、権限も監査ログも自然に載るのでこれが最適解になります。置きっぱなしのファイルを開きたいだけなら、サーバーを経由させる理由がありません。利用者の PC はもともとその共有に到達でき、AD の権限もそのまま効くからです。

C-2

WebDAV / SharePoint / OneDrive に置く

端末設定不要移行が必要

共有を WebDAV で公開すれば https リンクで開けて、かつエクスプローラーからネットワークドライブとしても見えます。SharePoint / OneDrive なら ms-sharepoint: odopen:// などの既定プロトコルと、同期による「ローカルにも実体がある」状態が両方手に入ります。

C-3

Edge の IE モード

延命策新規依存は非推奨

イントラネットゾーンで file:// が素直に動きます。ただし「エクスプローラーで開く」は IE11 由来の機能で、Chrome / Edge の通常モードには移植されていません。既存資産の延命として以外に選ぶ理由はありません。

13手法の比較

「選択状態」は、フォルダが開いて対象ファイルがハイライトされている状態。 実装量と大変さは一致しません——C-1 は最少のコードで最大の手間がかかり、A-2 はコードゼロで済みます。 効いてくるのは常に「端末への仕込み」の列です。

方式実装量端末への仕込み選択状態全ブラウザ壊れにくさ
A-1file:// 直リンク1行不要××動かない
A-2Edge IntranetFileLinksEnabled0行GPO のみ△ フォルダEdge
A-3Firefox capability.policy0行GPO / prefsFirefox
A-4search-ms:数行不要△ 検索結果中(遮断され得る)
A-5Office URI数行不要× アプリで開く高(Office 限定)
A-6パスをコピー10行不要× 手動貼付最高
A-7.url ダウンロード10行不要×低(AV 遮断)
B-1独自プロトコル50行GPO / MSI
B-2ローカルエージェント常駐アプリ一式常駐アプリ中(LNA)
B-3拡張 + Native Messaging拡張一式拡張配布Chromium
B-4デスクトップ化アプリ一式アプリ配布
C-1HTTP 配信(中継)50行不要× 不要になる要 VPN・権限再設計
C-2WebDAV / SharePoint0行不要高(要移行)

どれを選ぶか

前提は「ファイルは共有フォルダに置いたまま、アップロードしない」。この前提なら候補は3つに畳めます。 分岐を決めるのは技術ではなく、その端末を管理しているのが誰かです。

中間解は現実には成立しません。 ポリシー1個の有効化(A-2)が組織的に通らない相手に、実行ファイルの全台配布(B-1)が通る道理はありません。 「A-2 がダメなら独自プロトコル」という段階的な後退は成り立たず、方式は最初の1問でほぼ決まります。

1ブラウザは Edge に揃っていて、GPO を触れる?イントラネット ゾーンの登録を管理できるか。ベンダー側からの依頼で先方 IT が動くかどうかを含めて判断する

はい → A-2 のポリシー1本で終わり。アプリ側のコード変更はゼロ
いいえ → 次へ

2開きたい原本は Excel / Word?異常コード表のような Office 文書が主か

はい → A-5 の Office URI。配布ゼロ・設定変更ゼロで1クリック
いいえ → 次へ(PDF には効かない)

3上のどちらでもない端末に何も入れられず、原本も Office 文書ではない

結論 → A-6 のパスコピー。妥協ではあっても失敗ではない

常設どれを選んでも A-6 は残すGPO の適用範囲外の端末は必ず出る

理由 → 協力会社の持ち込み PC、新規端末、例外申請中のもの。そこで詰まると「使えないシステム」という評価になる

例外GPO は触れるが Edge ではない実際にはあまり起きない分岐

この時だけ → B-1 の独自プロトコル。ファイルを選択状態にできる唯一の道でもある

コピペに落ちることについて

A-6 は妥協案に見えますが、失敗ではありません。UNC パスをワンクリックでコピーし、トーストで確認を返し、貼り先を添える。 これだけでパスを目で読んで手打ちする作業が消えます。現場の体感はここで大きく変わります。 企業向けツールが実際にこの形を採っている例は多く、壊れないことを最優先する判断は社内システムでは筋が通っています。

結果の読み方

クリックしても本当に何も起きない

正常なブロックです。DevTools のコンソールに Not allowed to load local resource が出ていれば、原因はブラウザのポリシーであってパスの誤りではありません。同じ URL をアドレスバーに貼って開けるかどうかで切り分けます。

about:blank#blocked になる

Edge の file URL ブロックです。A-2 のポリシーが対象です。ポリシー適用後も直らない場合は、ページのゾーンを疑ってください。IntranetFileLinksEnabledローカル イントラネット ゾーンのページからのリンクにしか効きません

確認ダイアログは出るが、その後何も起きない

プロトコル自体はブラウザから OS に渡っています。問題はハンドラ側です。B-1 なら VBS のパス検証で弾かれている可能性が高いので、allowRoot の値と実際のパスの前方一致を確認してください。

ブラウザ内にフォルダの一覧が表示される

ブラウザが自分で file:// を描画している状態で、エクスプローラー連携は効いていません。A-2 のポリシー未適用か、ゾーンの不一致です。

ファイルは開くがエクスプローラーが出ない

仕様どおりです。file:// でファイルを直接指すと関連付けアプリが起動します。エクスプローラーを出したいなら、フォルダを指す(A-1′)か explorer /select を経由する(B-1)必要があります。

自宅や検証機では動いたのに業務端末で動かない

ポリシー・EDR・プロキシのいずれかです。特に search-ms:.url は攻撃に使われた履歴から遮断対象になりがちなので、この2つは早い段階で業務端末で試しておくと手戻りが減ります。