在 Windows 机器上(运行 Windows 7,x86-64)是否可以打开 system32/drivers/etc 中的“etc/hosts”文件,修改它并从 ruby 保存?
我得到“未打开写入(IOError)”错误代码很简单
file = File.open("C:/Windows/System32/drivers/etc/hosts")
file << "new line"
与其尝试从代码中获取权限(可能无法在不同的 Windows 操作系统之间移植),不如这样做:
通过这样做,您正在执行的所有程序也将具有管理权限。
编辑:这是你的问题:
file = File.open("C:/Windows/System32/drivers/etc/hosts","w")
file << "new line"
您必须以写入模式打开文件。
我最好的解决方法是让 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}"