每次我打开 Windows Subsystem for Linux 1(WSL1)时,都会出现一些烦人的事情,那就是我都会收到来自 Windows Defender 的以下通知(我使用的是 Windows 10)。
它说检测到了一个名为 的威胁SettingsModifier:Win32/HostsFileHijack
。这只在我开始使用 WSL1 时发生(即当我打开 Windows 终端时)。它说受影响的项目是C:\Users\MYUSERNAME\AppData\Local\Packages\CanonicalGroupLimited.UbuntuonWindows_79rhkp1fndgsc\LocalState\rootfs\etc\hosts
每次我开始使用 WSL1 时,有没有办法让它停止抱怨?我尝试将文件添加SettingsModifier:Win32/HostsFileHijack
到 Windows Defender 中的排除项中,但当我这样做时,它告诉我You can't open this location using this program
。
答案1
WSL 通常会自动生成/etc/hosts
,并且它似乎使用以下几个来源来实现:
- 一些以编程方式生成的条目
localhost
和别名 - Windows 主机文件的内容
- 对于 IPv6 和多播来说,一些“最好有”的功能
localhost
。
奇怪的是,您的 WSL/etc/hosts
触发了 Windows Defender,但 Windows 却没有。您是否已添加C:\Windows\System32\drivers\etc\hosts
到 Windows Defender 排除项?您是否用它来抑制 Windows 遥测或类似的东西?
编辑/更新:评论中的结论是 Spybot Anti-Beacon 可能是添加反遥测主机条目的罪魁祸首。这会触发 Windows Defender 警告SettingsModifier:Win32/HostsFileHijack
,该警告已排除在 Windows 主机文件之外。但是,由于 WSL/etc/hosts
是自动生成的,因此无法找到/打开它以将其排除。
至少我们可以关闭自动生成,您可以尝试创建自己的。要关闭自动生成,请执行以下操作:
- 在 WSL 实例中,创建或编辑
/etc/wsl.conf
- 添加以下部分:
[network] generateHosts = false
- 退出会话
- 运行
wsl --terminate <distroname>
(其中 是您的实例的名称) - 重启 WSL
- 创建您自己的
/etc/hosts
(最好以 root 身份在 下sudo
),至少包含以下内容:
以及您需要的 Windows 文件中的任何其他内容127.0.0.1 localhost 127.0.1.1 Yourwindowshostname.local Your_windows_machine_name
hosts
(如果有),当然不包括任何遥测阻止条目。
希望这可以解决错误。