오전 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를 사용하여 컴파일하고 관리자 권한으로 작업 스케줄러를 사용하여 로그온 시 실행합니다.