还有其他几个同名的问题,但它们不能解决我的问题,所以我又提出了一个。
我已将“hosts”文件的权限设置为当前用户的完全访问权限。我甚至已取得所有权。当前用户属于管理员组。
我已经关闭 UAC。
我已删除该文件的只读权限。
C:\Windows\System32\drivers\etc>attrib hosts A C:\Windows\System32\drivers\etc\hosts
我已禁用 Panada Antivirus。我还从服务面板中停止了 3 个 panda 服务。
我打开提升的命令行(以管理员身份运行)。运行记事本并更改文件。当我尝试保存文件时,收到以下错误:
“该进程无法访问该文件,因为该文件正在被另一个进程使用。
我使用“Unlocker”检查该文件,软件说该文件上没有活动锁。
有人可以帮忙吗?
答案1
答案2
刚刚遇到并解决了这个问题,经过一番折腾,我想提供一些说明。
我用了SysInternals 进程浏览器,以管理员身份运行,找到锁定文件的进程(通过使用Find > Find Handle or DLL
)。请注意,当我以非管理员权限运行它时,它无法看到系统级WRSA
进程。
在我的情况下是WRSA.exe
,即 Webroot Secure Anywhere。禁用保护会解锁文件,我可以轻松覆盖它。在某些版本的 webroot 中,您必须打开“高级设置 > 防护”,然后取消选中阻止编辑 hosts 文件的选项。
当然,防病毒软件应该保护诸如此类的文件hosts
,这是完全正确的。恶意软件喜欢这种东西。
答案3
我最终找到了罪魁祸首。是一个名为“Tiny Firewall”(Windows 防火墙规则管理软件)的程序导致了这个问题。
我不太清楚它对 hosts 文件做了什么,因为没有可用的软件可以显示文件上的锁定。我可以使用进程监视器 (Sysinternals) 发现它以某种方式与文件有关。我退出 UI 并停止了该进程(不允许停止,终止进程树并设置为手动服务)。
PS:这是 Tiny Firewall(保护 hosts 文件)的一项功能,您可以直接从其设置中将其关闭。
答案4
根据@gloschtla 的回答,我编写了一个小批处理文件。它大约需要 15 分钟的执行时间。它的作用是尝试重命名 hosts 文件,如果失败,它会等待一秒钟并再次尝试。
@echo off
:start
timeout /t 1
ren hosts hosts.old
if errorlevel 1 goto start
echo done!