標籤

BAT (38) shell (34) Virtual Machine (33) Xubuntu (29) acfs (25) PHP (24) CentOS (21) Virtul Box (20) 編輯器 (17) 資料庫 (15) lubuntu (13) windows (13) CPP (12) ubuntu (12) chrome (11) laravel (10) Docker (9) Python (9) 5A88 (7) VMware (6) 資料結構 (6) Javascript (5) Node (5) Proxmox VE (5) 公告系統 (5) 程式積木 (5) Android Studio (4) ANN (3) OB2D2016x64 (3) Xoops (3) clonezilla (3) samba (3) 公文 (3) 其他 (3) 硬體 (3) API (2) Android (2) AppInvent2 (2) Html (2) Hyper-V (2) Nas (2) botnet (2) mbot (2) swift (2) wordpress (2) 樣板 (2) 防火牆 (2) AD的應用 (1) Ansible (1) Arduino (1) CSS (1) GitLab (1) HA Proxy (1) LegoEV3 (1) PowerShell (1) Scratch (1) VM (1) XenServer (1) kotlin (1) linuxmint (1) lxc (1)

2020年6月13日 星期六

只要會複製貼上,設定電腦教室學生機禁止瀏覽某些網頁


    電腦教室學生機需限制某些網站。比方說限制FB,其網址為https://www.facebook.com/,只要將www.facebook.com,貼到config.txt。對資料夾內的ForceSafeURL.exe 點兩下,即可限制FB。此外,程式還會建立備份檔。

使用方法:
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++ 檔案、資料夾、路徑處理函式庫

沒有留言:

張貼留言

在 Windows 10 x64 1909版,使用BAT快速安裝公文系統與人事服務網(自然人憑證)版

相關內容移往 https://skjhcreator.blogspot.com/2021/02/windows-10-x64-1909bat.html