午前 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 を使用してコンパイルし、管理者権限でタスク スケジューラを使用してログオン時に実行します。