「2023.007|CN」Issues 系列: WSL 中使用 Win-KeX 连接 Kali 时界面模糊问题
问题详述
- WSL 的子系统中包含微软官方提供的 Kali 子系统,并支持通过 Win-KeX 连接到 Kali 的 GUI 界面
- 通过 Win-KeX 连接 Kali 的 GUI 界面有 3 种模式
- Enhanced Mode
- Seamless Mode
- Windows Mode: 默认模式
- 经过尝试我认为默认模式 Windows Mode 的操作体验最好
- 但通过 Windows Mode 连接 Kali 的 GUI 界面后,显示非常模糊,尤其使用某些工具如 BurpSuite 时界面文字更是难以看清楚。尝试在 Kali 内部调节分辨率也无法解决。
相关信息
网上同样有人遇到并指出这个问题的
- Win-Kex Screen Resolution: 指出了问题原因,并提供了一种解决方法
- Win-KEX Resolution: Kali官方论坛里网友的提问,截至写这篇文章时没有人回复
问题分析
- Win-Kex Screen Resolution > Answer #1 中提出,可以通过将
Settings > Display > Scale & layout > Scale
设置为100%
来解决,这样确实可以使 Kali 的 GUI 变得清晰,但是也改变了主系统的 Scale,对某些用户会产生负面作用,即如果用户使用的是高清分辨率(如2K及以上)的显示器,则窗口、文字会变得非常小,很难看清。 - Win-Kex Screen Resolution > Answer #2 给出了解决思路,作者任务 GUI 渲染是通过
win-kex-win-x64
在 Windows 主系统中的 exe 文件实现的,所以只要找到并修改这个 exe 的High DPI Settings
即可。但作者后来也发现,他找不到win-kex-win-x64
在 Windows 主系统中的 exe 文件,只有 Kali 子系统中的\\wsl.localhost\kali-linux\usr\lib\win-kex\TigerVNC
Answer #1
和 Answer #2
都没有很好的解决问题,但是它们为我们最终解决问题提供了很好的思路。
问题解决
让我们按照 Answer #2
中的思路继续寻找答案,即 找到并修改 Windows 主系统中的与渲染 Kali 子系统 GUI 相关的 exe 程序,并修改它的 DPI 设置
。或者直接 找到并修改 启动 Kali 子系统的相关的 exe 程序,并修改它的 DPI 设置
。通过后者我们成功了。
通过 WSL 文档可以了解到,在 Windows 主系统的 CMD / PowerShell 中可以通过执行 kali
来启动 kali 子系统,而 kali
即为 kali.exe
在 CMD / PowerShell 中的省略形式。 kali.exe
其实对应的是位于系统环境变量 Path
中的某一个路径下的 exe 文件,如下图:
让我们来找到 kali.exe
的路径,使用 Get-Command -ShowCommandInfo kali
命令即可
接着通过 Explorer 打开 kali.exe
所在文件夹,接着:
- 右键单击
kali.exe
选择弹出菜单中的Properties
。 Compatibility
选项卡,Change high DPI Settings
- 在弹出的子窗口中选择
User this settings to fix scaling problems for this program instead of the one in settings
如下图
细心的读者可能发现上图中
kali.exe
的文件Size
为O bytes
,这没问题,不会影响这种解决方法的可行性
接着在 kali 子系统中执行 kex --wtstart
启动 kex Windows Mode 即可得到清晰的 Kali GUI,且能够自由切换 Kali GUI 的窗口大小(GUI启动后为默认为全屏显示,通过按 F8 弹出的菜单即可退出全屏),显示分辨率也可以自适应窗口大小改变(kex 其他两种 Mode 无法自适应)。