oldj / SwitchHosts

Switch hosts quickly!
https://switchhosts.vercel.app
Apache License 2.0
24.1k stars 2.5k forks source link

没有写入 Hosts 文件的权限 #645

Open XuMengEnEli opened 3 years ago

XuMengEnEli commented 3 years ago

System (Mac, Windows 7/8/10, Linux) / 操作系统

windows11

SwitchHosts! Version / SwitchHosts! 版本

image

Description / 描述

image

How to reproduce / 重现步骤

image

acustictags commented 3 years ago

win10下可以尝试修改一下hosts文件的权限。不知道win11下权限菜单有没有更改。

01

  1. 打开C:\Windows\System32\drivers\etc目录
  2. 右键hosts文件,选择属性
  3. 在弹出的窗口中,切换到安全标签页
  4. 点击🛡编辑按钮
  5. 在弹出的窗口中,找到组或用户名一栏,选中ALL APPLICATION PACKAGES
  6. 在下方ALL APPLICATION PACKAGES的权限一栏中,找到写入一行,勾选允许
  7. 点击应用,再打开SwitchHosts测试能否修改文件
llyjj5464 commented 3 years ago

俺也一样 win11

llyjj5464 commented 3 years ago

我解决了, 铁铁看下hosts文件的权限。只读勾掉。 image

chenyuncai commented 3 years ago

我是每次打开,都右键“已管理员身份运行”,

jeff1992 commented 3 years ago

解决办法汇总:

  1. 检查文件的“只读”属性,去掉“勾选”
  2. 检查文件的“隐藏”属性,去掉“勾选”,如果无法去除,可以执行命令行 "attrib -s -h C:\Windows\System32\drivers\etc\hosts"去除
  3. 以“管理员身份”运行switchhosts
  4. 为"hosts"文件增加当前用户的“完全控制”权限
qtxzy commented 2 years ago

无论我怎么努力,上面的所有方法都尝试了,还是所有的hosts都是只读状态,包括系统hosts和自己加的远程hosts(但是刷新可以成功),已经麻了,我也不知道是什么问题,之前是可以使用的,忽然就不能了,不知道是不是便携版的原因。。。 system version 20H2 19042 software version 4.0.3

ren-yc commented 2 years ago

同问,上面和百度的各种方法都用了还是显示 hosts 只读,后台报错

[Error: EPERM: operation not permitted, open 'C:\WINDOWS\system32\drivers\etc\hosts'] {
  errno: -4048,
  code: 'EPERM',
  syscall: 'open',
  path: 'C:\\WINDOWS\\system32\\drivers\\etc\\hosts'
}
aomo5 commented 1 year ago

在 Windows 11 中,hosts文件通常位于以下路径:C:\Windows\System32\drivers\etc\hosts。

如果你尝试更改hosts文件的只读属性,但每次更改后它都自动变回只读属性,可能是由于操作系统的保护机制导致的。Windows 11具有一种叫做"保护模式"的特性,该特性会在某些系统文件上自动应用只读属性,以防止非授权的更改。 还没找到解决方法

SJFCS commented 4 months ago

右键以管理员身份打开cmd,执行如下两条命令即可 attrib -s -h -r %windir%\System32\drivers\etc\hosts icacls "%windir%\System32\drivers\etc\hosts" /grant "%USERNAME%:(F)"

xjcxjcxjc commented 4 months ago

右键以管理员身份打开cmd,执行如下两条命令即可 attrib -s -h -r %windir%\System32\drivers\etc\hosts icacls "%windir%\System32\drivers\etc\hosts" /grant "%USERNAME%:(F)"

这个真可以,我电脑不知道为什么权限都配了也显示没写入权限

JaySet commented 1 month ago

右键以管理员身份打开cmd,执行如下两条命令即可 attrib -s -h -r %windir%\System32\drivers\etc\hosts icacls "%windir%\System32\drivers\etc\hosts" /grant "%USERNAME%:(F)"

问题解决了!!!百度了一圈都没有解决这个问题.这个大佬的命令完美的解决了这个问题,谢谢大佬

Mars-Dog commented 1 month ago

右鍵以管理員身分開啟cmd,執行下列配額指令即可 attrib -s -h -r %windir%\System32\drivers\etc\hosts icacls "%windir%\System32\drivers\etc\hosts" /grant " %windir%\System32\drivers\etc\hosts" /grant " %使用者名稱%:(F)"

繞了一大圈沒用的,這個才是正解,感謝!!

CoderAceHao commented 1 month ago

右键以管理员身份打开cmd,执行如下两条命令即可 attrib -s -h -r %windir%\System32\drivers\etc\hosts icacls "%windir%\System32\drivers\etc\hosts" /grant "%USERNAME%:(F)"

亲测可行,大佬NB!!!