【问题标题】:Opening a local or network path in Explorer from browser从浏览器在 Explorer 中打开本地或网络路径
【发布时间】:2022-10-25 01:35:02
【问题描述】:
我正在尝试从浏览器中打开 Explorer.exe 中的路径。我添加了一个自定义协议:
Windows Registry Editor Version 5.00
[HKEY_CLASSES_ROOT\filebrowser]
@="File browser"
"URL Protocol"=""
[HKEY_CLASSES_ROOT\filebrowser\shell]
[HKEY_CLASSES_ROOT\filebrowser\shell\open]
[HKEY_CLASSES_ROOT\filebrowser\shell\open\command]
@="\"C:\\Windows\\explorer.exe\" %1"
我正在浏览器中使用以下链接进行测试,该链接应在资源管理器中打开 C:\Windows:
<a href = "filebrowser:///parameter1=C:\Windows">Windows folder</a>
但是,当我单击链接时,资源管理器不会打开 C:\Windows 文件夹,而是打开 Documents 文件夹。不知何故,Explorer.exe 似乎没有正确接收该参数。如果我输入文件浏览器:///parameter1=C:\Windows在运行命令窗口中,资源管理器打开 Windows 文件夹。
如何在资源管理器中打开正确的路径?
【问题讨论】:
标签:
windows
registry
protocols
local
url-scheme
【解决方案1】:
对于如下链接:<a href = "filebrowser:///C:Windows">Windows folder</a> 使用我之前示例中的注册表脚本,Explorer.exe 将被调用文件浏览器:///C%5CWindows作为参数而不是C:窗户.我使用以下注册表脚本解决了这个问题,我在其中替换了一些字符串:
Windows Registry Editor Version 5.00
[HKEY_CLASSES_ROOTilebrowser]
@="File browser"
"URL Protocol"=""
[HKEY_CLASSES_ROOTilebrowsershell]
[HKEY_CLASSES_ROOTilebrowsershellopen]
[HKEY_CLASSES_ROOTilebrowsershellopencommand]
@="cmd /k set myvar=%1 & call set myvar=%%myvar:filebrowser:///=%% & call set myvar=%%myvar::=:\%% & call Explorer.exe %%myvar%% & exit"
如果不在 cmd 中运行批处理脚本或调用其他程序进行替换,似乎无法使用路径作为参数调用 Explorer.exe。
对于像这样的网络路径Host145用户MikeDocuments我不能使用反斜杠,因为它们会被 URL 编码并且很难在脚本中替换。相反,我正在使用#像这样签名:<a href = "filebrowser:///##Host145#Users#Mike#Documents">Test folder</a> ,脚本将变为:
Windows Registry Editor Version 5.00
[HKEY_CLASSES_ROOTilebrowser]
@="File browser"
"URL Protocol"=""
[HKEY_CLASSES_ROOTilebrowsershell]
[HKEY_CLASSES_ROOTilebrowsershellopen]
[HKEY_CLASSES_ROOTilebrowsershellopencommand]
@="cmd /k set myvar=%1 & call set myvar=%%myvar:filebrowser:///=%% & call set myvar=%%myvar::=:\%% & call set myvar=%%myvar:#=\%% & call Explorer.exe %%myvar%% & exit"
【解决方案2】:
对我来说那是行不通的
cmd /k set myvar=%1 & call set myvar=%%myvar:filebrowser:///=%% & call set myvar=%%myvar::=:%% & call Explorer.exe %%myvar%% &出口
改成
cmd /k set myvar=%1 & call set myvar=%%myvar:filebrowser:///=%% & call set myvar=%%myvar::=:%% & call start %%myvar%% & exit
现在工作正常
在 Windows 11 和 10 上测试