V2EX = way to explore
V2EX 是一个关于分享和探索的地方
现在注册
已注册用户请  登录
shujuliuer
V2EX  ›  Windows

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

  •  
  •   shujuliuer · 1 天前 · 6341 次点击

    使用快捷方式一键修改 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

    76 条回复    2025-02-26 20:38:07 +08:00
    qW7bo2FbzbC0
        1
    qW7bo2FbzbC0  
       1 天前
    牛批
    bbao
        2
    bbao  
       1 天前   ❤️ 6
    看了这么一大堆文字,觉得,还是直接打开 host 文件修改比较快~~~~
    julyclyde
        3
    julyclyde  
       1 天前   ❤️ 63
    在低频需求上瞎优化
    Zhuzhuchenyan
        4
    Zhuzhuchenyan  
       1 天前   ❤️ 7
    我用 Power Toys 的 Hosts File Editor utility ,感觉也挺便捷的
    https://learn.microsoft.com/en-us/windows/powertoys/hosts-file-editor
    bzw875
        5
    bzw875  
       1 天前
    ShadowPower
        6
    ShadowPower  
       1 天前   ❤️ 2
    我用 SwitchHosts……
    layxy
        7
    layxy  
       1 天前
    当有很多 host 需要管理的时候还是 SwitchHosts 比较方便,否则手动编辑其实也还好
    Alliot
        8
    Alliot  
       1 天前   ❤️ 11
    冷知识: Win+R 打开运行,输入 drivers 回车,就能快速定位到 hosts 文件路径,双击就可以打开啦。
    zictos
        9
    zictos  
       1 天前   ❤️ 1
    随便建立一个快捷方式就可以了啊,路径:
    %windir%\system32\notepad.exe %windir%\system32\drivers\etc\hosts
    Belmode
        10
    Belmode  
       1 天前   ❤️ 3
    xqzr
        11
    xqzr  
       1 天前
    Win+R 或 创建快捷方式
    sudo notepad drivers\etc\hosts
    yidev
        12
    yidev  
       1 天前   ❤️ 11
    我要是发送一个 hosts 快捷方式到桌面, 阁下又该如何应对?
    Mark24
        13
    Mark24  
       1 天前
    sudo vim /etc/hosts
    chendy
        14
    chendy  
       1 天前
    我的方法:
    1. 用 vscode 打开,保存的时候会提示要管理员权限,然后确认就行了
    2. 用 Power toy 里的 hosts 工具
    asdasdqqq
        15
    asdasdqqq  
       1 天前
    switchhosts
    opengps
        16
    opengps  
       1 天前
    我的 notapad++里常年吧 hosts 设置为第一个打开的文件
    xiaolv
        17
    xiaolv  
       1 天前
    @xqzr 这个确实方便。不过要 24h2
    henix
        18
    henix  
       1 天前
    有意思,但怎么没显示需要管理员权限的提示?
    linuxsir2020
        19
    linuxsir2020  
       1 天前
    HankAviator
        20
    HankAviator  
       1 天前
    没事
    经常
    手动
    用记事本
    改 hosts 玩
    PrinceofInj
        21
    PrinceofInj  
       18 小时 17 分钟前
    这个主要是第一次修改需要改文件权限。楼上这么多直接编辑的,想必第一次也得改一下文件权限才行吧。
    wangtian2020
        22
    wangtian2020  
       17 小时 58 分钟前
    powertoys
    ZxykM
        23
    ZxykM  
       17 小时 44 分钟前
    只用 SwitchHosts
    shujuliuer
        24
    shujuliuer  
    OP
       17 小时 25 分钟前
    @zictos 会有编辑权限问题
    shujuliuer
        25
    shujuliuer  
    OP
       17 小时 24 分钟前
    @henix 关键的点就在这里,无须管理员权限的提示
    body007
        26
    body007  
       17 小时 18 分钟前
    zictos
        27
    zictos  
       17 小时 17 分钟前
    @shujuliuer #24 我今天真的遇到了编辑权限的问题,以前明明好好的,今天突然不能直接修改了,通过管理员权限运行 cmd 并通过 notepad.exe 打开 hosts 文件才能编辑。我一直用 administrator 账户登录的,以前能直接手动修改也能使用 python 自动修改。

    不过权限问题解决了,用管理员权限运行 cmd ,然后执行下面两行命令之后就能随意编辑 hosts 文件了。
    takeown /f C:\Windows\System32\drivers\etc\hosts
    icacls C:\Windows\System32\drivers\etc\hosts /grant Administrators:F
    peasant
        28
    peasant  
       17 小时 14 分钟前
    我选择本地跑 AdGuardHome
    fox2081
        29
    fox2081  
       17 小时 3 分钟前
    Power Toys 了解一哈
    raymonguo
        30
    raymonguo  
       16 小时 50 分钟前
    code C:\Windows\System32\drivers\etc\hosts
    leee41
        31
    leee41  
       16 小时 46 分钟前
    C:\Windows\System32\drivers\etc\hosts
    我直接快速访问固定该文件
    lscho
        32
    lscho  
       16 小时 39 分钟前
    这就是我为什么开发环境不用 windows 的原因。。。。
    FarmerChillax
        33
    FarmerChillax  
       16 小时 35 分钟前
    不如考虑一下这个: https://github.com/oldj/SwitchHosts 还带了环境管理
    minami
        34
    minami  
       16 小时 33 分钟前
    @lscho 能发散到这个的也是神人了
    LitterGopher
        35
    LitterGopher  
       16 小时 29 分钟前
    直接給 HOST 文件創建一個軟鏈接到你常用的目錄或桌面唄.
    LitterGopher
        36
    LitterGopher  
       16 小时 26 分钟前
    @lscho #32 虽然我自己使用 Linux 开发, 但是就我所遇到的和过的公司和部门几乎也只有我是在纯 Linux 上开发,就算嵌入式不少也都是在 Windows 上开发, Linux 上调试, 即便在 Linux 上开发的也是在 Windows 装虚拟机进行开发, 而不是裸跑 Linux 进行开发.

    你说 macOS? 那你一定不是做开发的.
    lscho
        37
    lscho  
       16 小时 21 分钟前
    @minami


    @LitterGopher

    啊?我只是说了“我”,又没有代表别人。不知道你们应激什么。。。
    LitterGopher
        38
    LitterGopher  
       16 小时 18 分钟前
    @lscho #37 好像确实是我应激了, 抱歉, 抱歉.
    qingshengwen
        39
    qingshengwen  
       16 小时 16 分钟前
    @yidev #12 哈哈哈哈,我就是这么做的
    dode
        40
    dode  
       16 小时 16 分钟前
    使用 vscode 编辑器打开,保存时自动提升使用管理员权限强制保存
    sinry
        41
    sinry  
       16 小时 14 分钟前
    你这太慢了,不如 utools ,1 秒打开
    FishBear
        42
    FishBear  
       16 小时 9 分钟前   ❤️ 1
    @Zhuzhuchenyan #4 确实 直接按 alt+空格后 输入 host 就可以编辑了
    happyxhw101
        43
    happyxhw101  
       16 小时 7 分钟前
    F2(打开 guake 终端) -> sudo vim /etc/hosts
    Vegetable
        44
    Vegetable  
       16 小时 6 分钟前
    不是,快捷方式不能用吗?
    strobber16
        45
    strobber16  
       15 小时 37 分钟前
    不是,本站用户人手一个软路由谁 TM 还改本机 hosts 啊
    bhqt
        46
    bhqt  
       15 小时 23 分钟前
    hostsx
    vmebeh
        47
    vmebeh  
       15 小时 11 分钟前 via iPhone
    能直接编辑的都是关了 UAC 的,打开任何程序都是有管理员权限,相当于 sudo 任何程序
    psxf
        48
    psxf  
       15 小时 5 分钟前
    ...用 Listary 搜索 host 直接编辑
    ShadowPower
        49
    ShadowPower  
       15 小时 1 分钟前
    @strobber16 公司有一堆环境,微服务改配置里的注册中心和中间件的 IP 地址要花点时间。用域名,直接改 hosts ,然后全部重启就搞定了
    ShadowPower
        51
    ShadowPower  
       14 小时 42 分钟前
    @lscho 我想知道为什么这是你不用 Windows 的原因……
    难道这玩意还影响开发吗?
    killva4624
        52
    killva4624  
       14 小时 32 分钟前
    alias vimhosts='vim /etc/hosts'
    crac
        53
    crac  
       14 小时 27 分钟前
    其实翻墙软件里带这个功能的 直接写配置文件里就行。。。
    jadeborner
        54
    jadeborner  
       14 小时 0 分钟前
    powertoys 里面不有吗
    yulgang
        55
    yulgang  
       13 小时 40 分钟前
    创建一个快捷方式,比如:

    Hosts.lnk

    Target: %windir%\system32\notepad.exe %windir%\system32\drivers\etc\hosts

    选填:
    Shortcut key: Ctrl + Alt + C
    Advanced: Run as Administrator

    需要需改 hosts 的时候,任意窗口下,按 Ctrl + Alt + C ,允许以管理员身份运行即可。
    minami
        56
    minami  
       13 小时 35 分钟前
    @lscho #37 能说到应激更是个神人,请问哪个系统不用工具改 hosts 不是进去手动改文件?跟 Windows 有什么关系? hosts 是给普通用户改着玩的吗
    woodfizky
        57
    woodfizky  
       12 小时 3 分钟前
    如果用火绒,火绒就有这个类似的工具,帮你解决编辑权限问题。

    在用这个之前,我的做法是复制一个 hosts ,用记事本打开,编辑完之后同名扔回去覆盖。
    dmanbu
        58
    dmanbu  
       12 小时 0 分钟前
    我之所有不喜欢 powershell ,就是因为这玩意又臭又长
    lambdaq
        59
    lambdaq  
       11 小时 55 分钟前
    @shujuliuer

    > 关键的点就在这里,无须管理员权限的提示

    呃,权限的问题,你可以手工修改一次,以后都没问题了。或者通过 cacls 命令去修改

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

    但是以上仅仅代表 [我] 个人感觉。
    zenghx
        64
    zenghx  
       10 小时 57 分钟前
    gsudo/sudo 就好了
    hefish
        65
    hefish  
       10 小时 47 分钟前
    全球最快,史上最快,国内首创,天下无敌。。。
    esee
        66
    esee  
       10 小时 19 分钟前
    @leee41 我也是这样
    mobaijun
        67
    mobaijun  
       10 小时 12 分钟前
    mobaijun
        68
    mobaijun  
       10 小时 11 分钟前
    <img alt="tu" src="https://imgur.com/a/9MEefEw"> 没有这种方式嘛
    ShadowPower
        69
    ShadowPower  
       10 小时 9 分钟前
    @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
        70
    asm  
       10 小时 5 分钟前
    @Alliot 牛啤~ 我以前经常这么输入%systemroot%\system32\drivers\etc.......
    xiaomoxian
        72
    xiaomoxian  
       9 小时 52 分钟前 via Android
    @yidev 我是让 host 文件的快捷方式散布在每一个文件夹下,随时都能打开
    davin
        73
    davin  
       9 小时 47 分钟前
    以前流行 SwitchHosts 的时候,为了方便切换开发环境的 host 配置,经常设置 SwitchHosts 开机自动启动,随用随改。
    magicls
        74
    magicls  
       9 小时 13 分钟前
    蛤?
    mmdsun
        75
    mmdsun  
       9 小时 1 分钟前
    微软新出了个 sudo 安装下就很方便了
    czz404
        76
    czz404  
       6 小时 1 分钟前
    listary 直接键入 host 也可以
    关于   ·   帮助文档   ·   博客   ·   API   ·   FAQ   ·   实用小工具   ·   1116 人在线   最高记录 6679   ·     Select Language
    创意工作者们的社区
    World is powered by solitude
    VERSION: 3.9.8.5 · 24ms · UTC 18:39 · PVG 02:39 · LAX 10:39 · JFK 13:39
    Developed with CodeLauncher
    ♥ Do have faith in what you're doing.