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

246 天前
 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

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

但是以上仅仅代表 [我] 个人感觉。
zenghx
245 天前
gsudo/sudo 就好了
hefish
245 天前
全球最快,史上最快,国内首创,天下无敌。。。
esee
245 天前
@leee41 我也是这样
mobaijun
245 天前
mobaijun
245 天前
<img alt="tu" src="https://imgur.com/a/9MEefEw"> 没有这种方式嘛
ShadowPower
245 天前
@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
245 天前
@Alliot 牛啤~ 我以前经常这么输入%systemroot%\system32\drivers\etc.......
AsuorZ
245 天前
xiaomoxian
245 天前
@yidev 我是让 host 文件的快捷方式散布在每一个文件夹下,随时都能打开
davin
245 天前
以前流行 SwitchHosts 的时候,为了方便切换开发环境的 host 配置,经常设置 SwitchHosts 开机自动启动,随用随改。
magicls
245 天前
蛤?
mmdsun
245 天前
微软新出了个 sudo 安装下就很方便了
czz404
245 天前
listary 直接键入 host 也可以
meteora0tkvo
244 天前
Hopetree
244 天前
@bbao 有没有一种可能 Windows 上面不能直接编辑 hosts 文件,至少不能直接编辑,你可以拷贝一份编辑之后替换,但是不允许直接编辑
guanzhangzhang
244 天前
大佬,我想写个修改 ip 的,powershell 用 New-NetIPAddress -InterfaceAlias 保存为.ps1 后无法运行,调整 powershell 运行策略后点击要是弹权限
bbao
244 天前
@Hopetree 没有可能

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

https://www.v2ex.com/t/1114164

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

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

© 2021 V2EX