使用方法:
1.下載檔案下載
2.解壓縮,解壓密碼demo1234
3.修改設定檔config.txt
4.對資料夾內的ForceSafeURL.exe 點兩下
5.會產生hostsBK+日期,完成。
注意事項:
1.內有ForceSafeURL.cpp,可用Dev C++重新編譯
以下是思考過程與原始碼
檔案名稱:ForceSafeUrl.cpp
內容:
#include <windows.h>
#include <fstream>
#include <iostream>
#include <fstream>
#define MAX_FILENAME 100
#define MAX_TotalNumber 1000
#include <stdio.h>
#include <stdlib.h>
#include <string.h>
#include <time.h>
using namespace std;
struct UD {
char httpUrl[MAX_FILENAME];
};
int main() {
/*讀取設定檔的變數*/
char httpUrlmark[MAX_FILENAME];
struct UD UD[MAX_TotalNumber];
int TotalNum;
int i;
ofstream outfile;
bool FileExist;
//將時間寫入檔名
char filename[128];
time_t now=time(NULL);
struct tm *newtime=localtime(&now);
strftime(filename,128,"hostsBK%Y-%m-%d",newtime);
ifstream fin("config.txt");
if(!fin) {
cout << "無法讀入檔案\n";
return 1;
}
fin >>httpUrlmark;
TotalNum = 0;
//讀取禁止存取的網站網址
while(!fin.eof()) {
fin >> UD[TotalNum].httpUrl;
TotalNum++;
if (TotalNum>=MAX_TotalNumber) {
cout <<"警告!!\n"
cout <<"讀取名稱與對應IP資料數超過1000!!\n"
cout <<"需修改原始碼MAX_TotalNumber並重新編譯!!\n";
}
}
fin.close();
//備份 hosts
FileExist = CopyFile("C:\\Windows\\System32\\drivers\\etc\\hosts",filename,FALSE);
if (!FileExist) {
cout << "找不到檔案C:\\Windows\\System32\\drivers\\etc\\hosts"<<endl;
} else {
cout <<"備份hosts,檔名為 "<<filename<<endl;
}
//寫入hosts
outfile.open("C:\\Windows\\System32\\drivers\\etc\\hosts", std::ios_base::app);
for(i=0;i<=TotalNum-1;i++) {
/*網站網址(對應總數需小於等於1000)*/
outfile << "0.0.0.0" <<" "<<UD[i].httpUrl<<endl;
}
return 0;
}
資料來源:
1.C++ CopyFile函式的用法
2.[C語言練習]以日期作為存檔名稱
3.C/C++---用fprintf函数输出.txt文件
4.C語言rename()函數:重命名文件或目錄
5.C++ 檔案、資料夾、路徑處理函式庫
沒有留言:
張貼留言