如何在特定時間阻止連接埠?

如何在特定時間阻止連接埠?

我想在特定的時間內阻止端口,例如凌晨 1 點到凌晨 3 點。我可以向內建防火牆添加規則,但這始終會阻止連接埠。有什麼辦法可以只在特定的時間內執行此操作嗎?

答案1

不可以。 除非您製作自己的 VBS 腳本來使用任務規劃程式實現自動化,否則這是不可行的。為此,您需要實作 Windows 防火牆 API。如果oyu製作一個腳本發布它。這對其他人會有巨大的幫助。

答案2

最後我找到了解決方案。首先在防火牆中新增一條規則來阻止所需的應用程式。然後可以使用以下命令啟用或停用該規則:

netsh advfirewall firewall set rule name="MyRule" new enable=yes

可以將其新增至定期檢查時間並相應啟用/停用 MuRule 的腳本中。我在批次腳本中找不到 sleep 命令,而且我不知道 PowerShell,所以我編寫了一個簡單的 C++ 程式。

#include<ctime>
#include<windows.h>
using namespace std;

int main()
{//code for hiding console
    HWND window; 
    AllocConsole();
    window = FindWindowA("ConsoleWindowClass", NULL);
    ShowWindow(window,0);

    Sleep(60*1000);// 1 min delay
    time_t now;
    struct tm *current;
    now = time(0);
    while(1)
    {
    current = localtime(&now);
    if(current->tm_hour>=22||current->tm_hour<=6) // 10 pm to 6 am
        system ("netsh advfirewall firewall set rule name=\"MyRule\" new enable=yes");
    else
        system ("netsh advfirewall firewall set rule name=\"MyRule\" new enable=no");
    Sleep(10*60*1000);// 10 min delay
    }
    return 0;
}

使用 gcc 進行編譯,並使用具有管理員權限的任務排程器在登入時執行。

相關內容