我尝试了多种方法在 Windows 上编辑 hosts 文件,但都失败了。
首先,使用 PowerShell 时,hosts 文件似乎会出现,但使用任何其他工具时,整个 \etc\ 目录都会消失。但由于我不知道如何在 PowerShell 中以管理员身份打开(我猜这是不可能的),所以我只是用记事本以管理员身份运行创建了一个新的 etc 目录。
但是现在 hosts 中提供的信息未被任何程序(浏览器或 putty)使用。作为 Unix 爱好者,这对我来说非常令人沮丧。我如何在 Windows 10 上编辑它?我也不介意在设置应用程序深处隐藏一些 GUI 东西来提供相同的功能。
答案1
您不必以提升的管理员身份调用 PowerShell,但如果您必须执行需要管理员权限的多个操作,它会有所帮助。
要从正常 PowerShell 会话编辑 hosts 文件,请使用:
Start-Process -FilePath notepad.exe -Verb runas -ArgumentList "$env:SystemRoot\system32\drivers\etc\hosts"
系统将提示您输入管理员凭据,然后 notepad.exe 将以提升权限启动,并且您可以编辑 hosts 文件。
请注意-Verb runas
命令中的,它告诉 PowerShell 以更高的完整性级别启动该进程。
不要尝试更改 hosts 文件的 NTFS 权限以普通用户身份对其进行编辑。这存在安全风险,并且权限可能会在下一次 Windows 更新或修复过程中被重置。
答案2
首先,请注意您必须以管理员身份调用 Powershell。您是正确的,没有像 sudo/su 这样的命令,但您可以右键单击 powershell 并以管理员身份运行。
第二个 Windows 默认附带 %systemroot%\system32\drivers\etc\hosts 文件,但在最近的一些版本中,该路径(我相信是驱动程序)的令牌是隐藏的。
第三,修改文件后,一定要重启。
第四,请注意,NSLookup 之类的工具始终会首先检查 DNS,因此在测试时请使用 Ping 或其他类似的实用程序来回显已解析的 IP,而不是使用nslookup
。
答案3
正如其他答案中提到的,hosts 文件存储在 C:\windows\system32\drivers\etc\hosts 中。但是,在 Windows Vista 及更高版本中,您必须更改权限。我的一些 Web 开发人员用户希望每小时手动更改一次,因此我的流程是:1. 打开提升的 explorer.exe 到该目录 2. 复制原始 hosts 文件 3. 将原始 hosts 文件重命名为 .old 4. 将新文件重命名为“hosts” 5. 编辑权限以明确允许相关用户完全访问。不要允许“所有人”。