如何在特定时间内阻止某个端口?

如何在特定时间内阻止某个端口?

我想在特定时间段内封锁某个端口,比如凌晨 1 点到凌晨 3 点。我可以向内置防火墙添加规则,但这会一直封锁该端口。有没有办法只在特定时间段内执行此操作?

答案1

不可以。除非您自己编写 VBS 脚本来使用任务计划程序进行自动化,否则这是不可能的。为此,您需要实现 Windows 防火墙 API。如果您编写了脚本,请发布它。这将对其他人有很大帮助。

答案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 进行编译并在登录时使用具有管理员权限的任务计划程序运行。

相关内容