Não. Não é factível a menos que você faça seu próprio script VBS para automatizar com o Agendador de Tarefas. Para o qual você precisa implementar a API do Firewall do Windows. Se oyu fizer um script, poste. Seria de imensa ajuda para os outros.
Eu quero bloquear uma porta por um período de tempo específico, digamos de 1h às 3h. Eu posso adicionar uma regra ao firewall embutido, mas isso bloqueia a porta o tempo todo. Existe alguma maneira de fazer isso apenas por um período específico de tempo?
Não. Não é factível a menos que você faça seu próprio script VBS para automatizar com o Agendador de Tarefas. Para o qual você precisa implementar a API do Firewall do Windows. Se oyu fizer um script, poste. Seria de imensa ajuda para os outros.
Finalmente, encontrei uma solução. Primeiro adicione uma regra para bloquear o aplicativo desejado no firewall. Então a regra pode ser ativada ou desativada usando o comando:
netsh advfirewall firewall set rule name="MyRule" new enable=yes
Isso pode ser adicionado a um script que verifica periodicamente a hora e ativa / desativa o MuRule de acordo. Não consegui encontrar o comando sleep no script em lote e não conheço o PowerShell, por isso escrevi um programa simples em 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;
}
Compile usando o gcc e execute no logon usando o Agendador de Tarefas com privilégios de administrador.