在文件夹右键直接打开 Kali WSL:一条 `wsl --cd` 注册表脚本

在文件夹右键直接打开 Kali WSL:一条 wsl --cd 注册表脚本

用 WSL 的人大概都经历过这个流程:想在当前文件夹里进入 Kali,先打开 Windows Terminal,再敲 wsl -d kali-linux,然后手动 cd 到目标目录。路径短还好,路径一长就很容易敲错。更省事的做法是在文件夹空白处点右键,直接选择"Open in Kali (WSL)",让 WSL 以当前文件夹作为工作目录启动。

下面这段注册表脚本就是干这件事的。它只添加一个右键菜单项,不改动 WSL 本身的配置,导入后重启资源管理器即可使用。


脚本全文

reg 复制代码
Windows Registry Editor Version 5.00

[HKEY_CLASSES_ROOT\Directory\Background\shell\OpenInKaliWSL]
@="Open in Kali (WSL) "
"Icon"="C:\\Windows\\System32\\wsl.exe"

[HKEY_CLASSES_ROOT\Directory\Background\shell\OpenInKaliWSL\command]
@="wsl --cd \"%V.\""

保存为 .reg 文件,例如 OpenKaliWSL.reg,双击导入,重启资源管理器(或在任务管理器中结束 explorer.exe 后重新启动),右键菜单里就会出现 Open in Kali (WSL)。


逐项解析

菜单项位置:Directory\Background\shell

reg 复制代码
[HKEY_CLASSES_ROOT\Directory\Background\shell\OpenInKaliWSL]
  • Directory\Background\shell 对应的是文件夹空白处右键 时出现的菜单。注意它和 Directory\shell 的区别:前者是文件夹内部空白区域,后者是文件夹图标本身。这段脚本只注册了前者,所以菜单只会在文件夹空白处右键时出现。
  • OpenInKaliWSL 是菜单项的内部名称,可以自定义,但同一位置下不要和已有项重名。

显示文字:@="Open in Kali (WSL) "

@ 的值就是这个菜单项显示的文字。注意末尾有一个空格 :原文是 "Open in Kali (WSL) ",引号内最后一个字符是空格。这可能是作者有意为之,也可能是手误。如果导入后菜单文字后面看起来多了一个空位,把末尾空格删掉即可,不影响功能。

如果想显示中文,可以改成 "在 Kali (WSL) 中打开",但要注意文件编码------.reg 文件如果保存为普通 ANSI,中文可能乱码;建议保存为 UTF-16 LE 或带 BOM 的 UTF-8。

图标:"Icon"="C:\\Windows\\System32\\wsl.exe"

菜单左侧显示的图标直接复用 wsl.exe 的图标。wsl.exe 位于 C:\Windows\System32,这个路径在绝大多数 Windows 系统上是固定的,通常不需要修改。反斜杠在 .reg 文件中需要双写,所以写成 C:\\Windows\\System32\\wsl.exe。

命令:@="wsl --cd \"%V.\""

这一行是整段脚本的核心。点击菜单后实际执行的是:

bat 复制代码
wsl --cd "%V."

拆开看:

  • wsl :调用 WSL 启动默认发行版。这里没有写 -d kali-linux,所以启动的是当前默认发行版。如果默认发行版不是 Kali,菜单名"Open in Kali"就名不副实了------详见下文"注意:默认发行版"一节。
  • --cd :WSL 的工作目录参数,启动时把 Linux 侧的工作目录切换到指定路径。这是较新版本 WSL 支持的功能;如果 --cd 不被识别,说明 WSL 版本偏旧,需要先升级 WSL。
  • "%V." :%V 是文件夹背景右键时 Windows 传入的当前文件夹路径。外面套双引号是为了应对路径中的空格;末尾的 . 表示"当前目录",即 C:\some\folder\. 和 C:\some\folder 指向同一位置。这个写法是合法的 Windows 路径,WSL 的 --cd 能够正确解析。在 .reg 文件中,双引号要写成 \"。

--cd 的好处是:WSL 启动后直接落在对应目录,不需要再手动 cd,而且路径由 Windows 侧传入,省去了手动输入长路径的麻烦。


使用步骤

  1. 确认 WSL 中有 Kali 发行版 。在 PowerShell 或 CMD 中执行 wsl -l -v,查看已安装的发行版列表。如果没有 Kali,先执行 wsl --install -d kali-linux(或从 Microsoft Store 安装)。
  2. 确认默认发行版 。执行 wsl -l -v 时,默认发行版前面会有 * 标记。如果默认不是 Kali,有两种选择:
    • 把 Kali 设为默认:wsl --set-default kali-linux;
    • 或者修改脚本命令,显式指定发行版:@="wsl -d kali-linux --cd \"%V.\""。
  3. 确认 WSL 支持 --cd 。在 PowerShell 中执行 wsl --cd C:\ -- echo ok,如果能输出 ok,说明当前 WSL 版本支持该参数;如果报错,先执行 wsl --update 升级。
  4. 将脚本保存为 .reg 文件并双击导入。写入 HKEY_CLASSES_ROOT 通常会触发 UAC 提示,选择"是"。
  5. 重启资源管理器,或在任务管理器中结束 explorer.exe 后重新启动。也可以在文件夹空白处右键,如果菜单没出现,再重启一次资源管理器。
  6. 在任意文件夹空白处右键,选择 Open in Kali (WSL),应该会打开一个 WSL 终端,并且工作目录已经是当前文件夹。

注意:默认发行版与菜单名的一致性

脚本的菜单文字写的是 Open in Kali (WSL),但命令里只有 wsl,没有指定发行版。这意味着实际行为是"用默认发行版打开",而不是"用 Kali 打开"。如果你的默认发行版恰好是 Kali,两者一致,没有问题;如果默认发行版是 Ubuntu 或其他,菜单名就会误导人。

两种修正方式:

  • 改默认发行版 (影响全局):wsl --set-default kali-linux。这样所有直接执行 wsl 的地方都会启动 Kali。
  • 改脚本命令 (只影响这个菜单):把 command 的值改成 wsl -d kali-linux --cd \"%V.\"。这样无论默认发行版是什么,这个菜单都固定打开 Kali。

如果 Kali 的发行版名称不是 kali-linux,以 wsl -l -v 列出的名称为准。


关于 %V. 末尾的点

%V 在文件夹背景右键时返回的就是当前文件夹的完整路径,通常已经不含末尾反斜杠。加一个 . 写成 %V.,等价于"当前目录",是 Windows 路径中的合法写法。这样做不会改变目标目录,也不是必须的------"%V" 本身就能正常工作。保留这个写法没有坏处,只是看起来稍微特别一点。

如果你希望脚本同时支持"文件夹图标右键",可以照搬上一篇的做法,再加一段注册到 HKEY_CLASSES_ROOT\Directory\shell\OpenInKaliWSL,命令参数用 %1 代替 %V:

reg 复制代码
[HKEY_CLASSES_ROOT\Directory\shell\OpenInKaliWSL]
@="Open in Kali (WSL)"
"Icon"="C:\\Windows\\System32\\wsl.exe"

[HKEY_CLASSES_ROOT\Directory\shell\OpenInKaliWSL\command]
@="wsl --cd \"%1\""

清理方法

如果不想保留这个菜单,把以下内容保存为 .reg 并导入,即可删除对应注册表项:

reg 复制代码
Windows Registry Editor Version 5.00

[-HKEY_CLASSES_ROOT\Directory\Background\shell\OpenInKaliWSL]

也可以在 regedit 中手动定位到 HKEY_CLASSES_ROOT\Directory\Background\shell\OpenInKaliWSL 并删除。删除后同样需要重启资源管理器才能看到菜单消失。


小结

这段脚本只做一件事:在文件夹空白处右键菜单里加一个入口,点击后执行 wsl --cd "<当前文件夹路径>"。核心概念有三个------Directory\Background\shell 是文件夹背景右键的位置,%V 是当前文件夹路径,--cd 让 WSL 启动后直接落在该目录。使用时留意两点:命令里没有指定发行版 ,所以实际打开的是默认发行版;--cd 需要较新的 WSL 版本 ,旧版本要先升级。把这两点确认好,这个菜单就能稳定地用起来,省掉每次手动 cd 的步骤。

相关推荐
陈工大模型15 分钟前
解压工具的三个技术分水岭:编码、分卷、容器格式
人工智能·windows·安全·解压工具·免费国内办公软件
Zucker n1 天前
文献发现、课题组织与证据可追溯的论文阅读。
论文阅读·windows·ubuntu
flyingonpine2 天前
PowerShell脚本数字签名实战:自签名证书、代码签名与信任链验证
windows·信任链
goehou2 天前
让 AI 替我操作这台电脑,先把手能伸多远定下来
windows·自动化·权限管理·ai agent
公子小六2 天前
基于.NET的Windows窗体编程之WinForms数据持久化(1)
windows·microsoft·c#·.net·winforms
2601_967987373 天前
安装 Redis 或 Redis Stack
linux·windows·redis·macos·安装
xbzb3 天前
自定义 yum 软件源:Linux 上 createrepo,Windows 上纯 Python 也能造
linux·运维·windows·python·yum·createrepo
武雄(小星Ai)3 天前
Ollama报llama-server binary not found排坑实录:服务活着引擎没了
人工智能·windows·大模型·ollama·排坑
叼烟扛炮4 天前
[LangChain] 学习笔记(06):突破大模型限制——结构化输出(Structured Output)
windows·笔记·学习·langchain