Ich möchte einen Port für eine bestimmte Zeit blockieren, beispielsweise von 1 bis 3 Uhr morgens. Ich kann der integrierten Firewall eine Regel hinzufügen, aber diese blockiert den Port ständig. Gibt es eine Möglichkeit, dies nur für einen bestimmten Zeitraum zu tun?
Antwort1
Nein. Das ist nicht machbar, es sei denn, Sie erstellen Ihr eigenes VBS-Skript zur Automatisierung mit dem Taskplaner. Dazu müssen Sie die Windows-Firewall-API implementieren. Wenn Sie ein Skript erstellen, posten Sie es. Es wäre für andere eine große Hilfe.
Antwort2
Endlich habe ich eine Lösung gefunden. Zuerst füge ich eine Regel hinzu, um die gewünschte Anwendung in der Firewall zu blockieren. Anschließend kann die Regel mit dem folgenden Befehl aktiviert oder deaktiviert werden:
netsh advfirewall firewall set rule name="MyRule" new enable=yes
Dies kann zu einem Skript hinzugefügt werden, das regelmäßig die Zeit überprüft und MuRule entsprechend aktiviert/deaktiviert. Ich konnte den Sleep-Befehl im Batch-Skript nicht finden und kenne PowerShell nicht, also habe ich ein einfaches C++-Programm geschrieben.
#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;
}
Mit gcc kompilieren und bei der Anmeldung mit dem Taskplaner mit Administratorrechten ausführen.