Windows平臺快速切換hosts文件的小工具

上週孩子她媽跑過來說電腦上有個軟件打不開了,讓我給看看是怎麼回事。

做爲一個程序員,外行人眼中修電腦什麼的肯定都是必備技能啊!

我走過去看了看,這個軟件就是SwitchHosts!,具體問題當時沒有保存截圖,總之就是報錯!

最後解決的辦法就是把C:\Users\Administrator\.SwitchHosts這個文件夾刪除就好了。


雖然問題已經解決,但是我分析了下這個軟件,核心功能嘛就是切換預設的hosts文件嘛,功能並不複雜。

但是它:

1、高達100MB的程序體積(大概是爲了跨平臺,使用electron打包的程序)。

2、默認配置文件保存在用戶主目錄(這不符合我對綠色軟件的定義)。

 

因此我突發奇想,決定使用Windows原生API重寫一個真正的綠色程序,

按照我理解的綠色程序應該具有以下特點:

1、免安裝,解壓即用;

2、不寫註冊表,程序數據和配置文件保存在程序目錄下面;

3、打包整個程序目錄放到U盤,可以在任意電腦上打開,並得到相同的配置參數;


好的,說幹就幹。

於是我打開VS2005,新建一個MFC工程,然後此處省略1萬字........................

終於一個界面醜陋,功能簡單的hosts切換工具就產生了。

界面佈局參考了SwitchHosts!,左邊是配置文件的列表,右邊可以查看和編輯配置文件的內容。

左側的配置文件列表點鼠標右鍵可以進行添加、刪除、改名操作。

勾選對應的配置,可以同時勾選多個,則加載到系統hosts文件並執行清除DNS緩存的操作。

清除DNS緩存使用的是命令:ipconfig /flushdns

 

右側的編輯框查看和修改配置文件,並實時保存配置文件的改動。

實時保存這個功能,目前採用的是當EDIT控件丟失焦點時,如果文本內容有改變,則保存一次文件。

 

第一次啓動程序的時候會自動備份當前系統的hosts文件,命名爲“默認配置”;

所有配置文件均保存在程序主目錄的etc目錄下面,並以.hosts爲後綴;

編譯出來的程序也才200多KB,比起SwitchHosts!小巧了不是一點半點。

這個工具使用純MFC開發,源碼也非常的簡單,感興趣的朋友可以到我的碼雲查看源碼。

下載地址:https://download.csdn.net/download/qq446252221/12282814

源碼地址:https://gitee.com/kerndev/HostsMan


後記:

發給孩子她媽試用,竟然打開是一坨英文+亂碼!

原來hosts文件被SwitchHosts!修改過後變成了UTF8編碼的UNIX文檔(換行符變成了\n而不是\r\n)。

由於文本編輯使用的是EDIT控件,只能識別\r\n的換行符,

於是又修改了一下代碼,把加載的文件換行符強轉爲\r\n,才能正常換行。

但是UTF8編碼這個就有點麻煩了,暫時還不支持,只能用Notepad++先轉爲GBK編碼吧。


補充:

用python寫了個腳本把SwitchHosts!的配置導入HostsMan

#!python
#從SwitchHosts!導入配置文件
#蔣曉崗<[email protected]>
import io
import os
import json

#創建子目錄etc
def safe_mkdir(name):
	try:
		os.mkdir(name)
	except:
		return None

#保存配置
def save_hosts(dir, name, data):
	print("正在導入:", name)
	hosts = open(dir + "\\" + name + ".hosts", "w")
	hosts.write(data)
	hosts.close()

#入口
home = os.environ["USERPROFILE"]
file_name = home + "\\.SwitchHosts\\data.json"
file_obj = open(file_name, "r", encoding="utf8")
json_str = file_obj.read()
file_obj.close()
list_obj = json.loads(json_str)
for data in list_obj["list"]:
	title = data["title"]
	content = data["content"]
	safe_mkdir("etc")
	save_hosts("etc", title, content)
	

 

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章