在Windows机器上(运行Windows 7,x86-64)是否可以打开system32 / drivers / etc中的'etc / hosts'文件,修改它并从ruby中保存?
我得到“没有打开写入(IOError)”错误
代码很简单
file = File.open("C:/Windows/System32/drivers/etc/hosts")
file << "new line"
答案 0 :(得分:2)
不要试图从代码中获取权限(可能无法通过不同的Windows操作系统移植),请执行以下操作:
通过这样做,您正在执行的所有程序也将具有管理权限。
编辑:这是你的问题:file = File.open("C:/Windows/System32/drivers/etc/hosts","w")
file << "new line"
您必须以写入模式打开文件。
答案 1 :(得分:0)
我最好的解决方法是在必要时让ruby打开一个提升的命令提示符。它会提示用户输入密码,但总比没有好。
username = `whoami`.chomp
run = "runas /noprofile /user:#{username} \"cmd /C #{cmd}\""
system(run)
cmd
可以是您想要使用权限运行的任何命令。我编辑主机文件的方法是:
hosts_path = 'C:\windows\System32\drivers\etc\hosts'
hosts_file = File.open(host_path,'r') {|f| f.read}
...
--edit the hosts_file here--
...
cmd = "echo \"#{hosts_file}\" > #{hosts_path}"