WindowsにURLスキームを設定する方法になります。
当初cmd.exeを使ってやろうとしてたんですが、URLデコード変換がうまくいかず…
PowerShell.exeを使用してようやくうまくできるようになりました。
今回は NDATA: スキームを設定します。(DATAだけだとブラウザでうまく開けなかったのでNをつけました)
URLスキーム使用方法
NDATA:<フォルダ名>
NDATA:c:\windows\System32
設定方法
以下のテキストを NDATA.reg と名前を付けて保存、ファイルをダブルクリックしてレジストリをインポートしてください。
Windows Registry Editor Version 5.00
[HKEY_CURRENT_USER\SOFTWARE\Classes\NDATA]
@="url:NDATA protocol"
"URL Protocol"=""
[HKEY_CURRENT_USER\SOFTWARE\Classes\NDATA\shell\open\command]
@="PowerShell -windowstyle hidden -Command \"$v=\\\"%1\\\".Replace('ndata:','');Add-Type -AssemblyName System.Web;$v=[System.Web.HttpUtility]::UrlDecode($v);Explorer /n /e /root,$v;exit\""
Windows7の場合PowerShellのPathが必要でした。 最終行を以下の様に修正してください。
@="C:\\Windows\\System32\\WindowsPowerShell\\v1.0\\powershell.exe -windowstyle hidden -Command \"$v=\\\"%1\\\".Replace('sptdata:','');Add-Type -AssemblyName System.Web;$v=[System.Web.HttpUtility]::UrlDecode($v);Explorer /n /e /root,$v;exit\""
またWindows7に標準で入っているPowerShellはバージョンが古くて、うまく動作しませんでした。
『Windows Management Framework 5.1』をダウンロードしてインストールすれば期待通りに動作しました。
Windows7 64bit版: Win7AndW2K8R2-KB3191566-x64.zip
Windows7 32bit版: Win7-KB3191566-x86.zip
コマンド内容
# -windowstyle hidden ウインドウを隠す
# -Command コマンド入力
$v="%1".Replace('ndata:','') # ndata: を削除
Add-Type -AssemblyName System.Web
$v=[System.Web.HttpUtility]::UrlDecode($v) # パラメーターをURLデコード
Explorer /n /e /root,$v # エクスプローラーを開く
exit # 終了
Webブラウザで開く
以下のようなHTMLを作成してリンクをクリックしたら、指定したフォルダが開く
<a href="ndata:c:\windows\system32">c:\windows\system32</a>
これでブラウザからエクスプローラーを開く方法 その1(ActiveXを使った方法)が使用出来なくなっても、ほぼ同じ処理ができそうです。
コメント