我试图通过ruby代码修改Windows上的C:\ Windows \ System32 \ Drivers \ etc \ hosts文件。当文件以“w”或“a”模式打开时,它会给出错误
irb(main):001:0> @path = "C:\\Windows\\System32\\Drivers\\etc\\hosts"
=> "C:\\Windows\\System32\\Drivers\\etc\\hosts"
irb(main):002:0> File.open(@path, "w")
Errno::EACCES: Permission denied @ rb_sysopen - C:\Windows\System32\Drivers\etc\
hosts
from (irb):2:in `initialize'
from (irb):2:in `open'
from (irb):2
from c:/Ruby21/bin/irb:11:in `<main>'
在Windows 8上,我已完全控制以下用户的hosts文件
USERS
ALL APPLICATION PACKAGES
ADMINISTRATORS
SYSTEM
我已经确认在提供这些权限后我可以通过记事本修改hosts文件。 我也尝试通过cmd提示运行irb,该提示已经以管理员权限启动但是得到了同样的错误。
我遇到的原始问题是运行vagranthostsupdater插件,它修改了hosts文件。 vagrant在hosts文件修改步骤中失败并出现类似错误。我挖掘代码并看到它在ruby文件打开命令失败,即使hosts文件具有所有管理员权限。