可能是全球最快捷的修改 hosts 文件方式

2025 年 2 月 25 日
 shujuliuer

使用快捷方式一键修改 hosts 文件。 下面请看 VCR:

其实关键的命令只有一条:

powershell.exe -Command "Start-Process -FilePath notepad.exe -Verb RunAs -ArgumentList "$env:SystemRoot\system32\drivers\etc\hosts""

它使用记事本以管理员权限打开位于 C:\Windows\System32\drivers\etc\hosts 目录下的 hosts 文件,以便如果需要的话,可以编辑该文件。

Let's break it down:

powershell.exe: 这会调用 PowerShell 可执行文件,用于在命令行中执行 PowerShell 命令。

-Command: 该参数告诉 PowerShell 执行接下来的命令。

"Start-Process": 该 cmdlet 用于启动一个新进程(在这个例子中是一个应用程序,也就是记事本)。

-FilePath notepad.exe: 这指定了要启动的程序(记事本),notepad.exe 路径告诉 PowerShell 打开记事本。

-Verb RunAs: 这一部分指示 PowerShell 以提升的权限(管理员权限)运行该进程,这是修改系统文件(如 hosts 文件)所必需的。

-ArgumentList: 这指定了要传递给启动程序的参数(在本例中是记事本)。该参数是 hosts 文件的路径。
$env:SystemRoot\system32\drivers\etc\hosts: 这一部分通过 $env:SystemRoot 环境变量获取系统根目录(通常是 C:\Windows ),然后构建 hosts 文件的路径( C:\Windows\System32\drivers\etc\hosts )。

转义的双引号(\"):这些用于正确处理命令中的空格或特殊字符。此处用于围绕 $env:SystemRoot 变量,以正确地包含路径。

你也可以直接去下面网站下载已经生成的快捷方式。

windowsHost

11299 次点击
所在节点    Windows
84 条回复
lscho
2025 年 2 月 26 日
@minami 能说神人的就更神人了。。我一直在说的是“我”,不知道你在应激什么,我就不想手动点四五层目录进去找 host 文件怎么了?也不想使用 powershell ,我就喜欢直接 vim /etc/host 修改怎么了?甚至我可以说不想使用 windows 的文件管理器,因为我用着有点卡,这怎么了?和你有什么关系吗?真的搞笑。。。
alading11
2025 年 2 月 26 日
@Zhuzhuchenyan nb ,一直在用 Power Toys 但是搜索这个功能还真不咋用,批量修改文件名啥的还是挺好用的
lscho
2025 年 2 月 26 日
@ShadowPower 你看下 op 列出来改 host 使用的东西,并不是简单的改 host 的问题,而是因为这个问题衍生出来的 powershell 语法、权限设计、甚至文本编辑器带来的换行符问题。我是做后端开发的,代码要放到服务器运行的,在 windows 上开发 linux 运行的话,经常会有奇奇怪怪的小问题,真的会影响到我。

但是以上仅仅代表 [我] 个人感觉。
zenghx
2025 年 2 月 26 日
gsudo/sudo 就好了
hefish
2025 年 2 月 26 日
全球最快,史上最快,国内首创,天下无敌。。。
esee
2025 年 2 月 26 日
@leee41 我也是这样
mobaijun
2025 年 2 月 26 日
mobaijun
2025 年 2 月 26 日
<img alt="tu" src="https://imgur.com/a/9MEefEw"> 没有这种方式嘛
ShadowPower
2025 年 2 月 26 日
@lscho
op 写得太复杂了,其实非常简单,用 Powershell 以管理员权限运行程序是这样写:
Start-Process 程序名 参数 -Verb RunAs

程序名只需要填上:notepad
参数填上 hosts 文件路径:'C:\Windows\System32\drivers\etc\hosts'

我觉得还挺直观的。虽然没有 unix 命令那种一两个字母看起来短,不过实际上在脚本里可读性非常强。


然后用 Powershell 来运行它,只需要这样:
powershell -Command "这里是要执行的命令"

有缩略写法:
pwsh -c "这里是要执行的命令"


把这个添加到快捷方式里,就可以实现双击执行某条命令了。


对比苹果的设计,AppleScript 是这么写的:
do shell script "open -a 'TextEdit' /etc/hosts" with administrator privileges

整体上甚至差不多,格式都很像。如果追求“双击就能运行”,那么这就是最简单的方法了。
除非配了免密码,不然用 sudo 的方式需要输入密码。
asm
2025 年 2 月 26 日
@Alliot 牛啤~ 我以前经常这么输入%systemroot%\system32\drivers\etc.......
AsuorZ
2025 年 2 月 26 日
xiaomoxian
2025 年 2 月 26 日
@yidev 我是让 host 文件的快捷方式散布在每一个文件夹下,随时都能打开
davin
2025 年 2 月 26 日
以前流行 SwitchHosts 的时候,为了方便切换开发环境的 host 配置,经常设置 SwitchHosts 开机自动启动,随用随改。
magicls
2025 年 2 月 26 日
蛤?
mmdsun
2025 年 2 月 26 日
微软新出了个 sudo 安装下就很方便了
czz404
2025 年 2 月 26 日
listary 直接键入 host 也可以
meteora0tkvo
2025 年 2 月 27 日
Hopetree
2025 年 2 月 27 日
@bbao 有没有一种可能 Windows 上面不能直接编辑 hosts 文件,至少不能直接编辑,你可以拷贝一份编辑之后替换,但是不允许直接编辑
guanzhangzhang
2025 年 2 月 27 日
大佬,我想写个修改 ip 的,powershell 用 New-NetIPAddress -InterfaceAlias 保存为.ps1 后无法运行,调整 powershell 运行策略后点击要是弹权限
bbao
2025 年 2 月 27 日
@Hopetree 没有可能

这是一个专为移动设备优化的页面(即为了让你能够在 Google 搜索结果里秒开这个页面),如果你希望参与 V2EX 社区的讨论,你可以继续到 V2EX 上打开本讨论主题的完整版本。

https://study.congcong.us/t/1114164

V2EX 是创意工作者们的社区,是一个分享自己正在做的有趣事物、交流想法,可以遇见新朋友甚至新机会的地方。

V2EX is a community of developers, designers and creative people.

© 2021 V2EX