Windows 방화벽에서 규칙을 추가/삭제하는 방법

Windows 방화벽에서 규칙을 추가/삭제하는 방법

Windows 방화벽에서 규칙을 추가하고 삭제하는 도구를 구현해야 합니다. 규칙은 인바운드 또는 아웃바운드일 수 있으며 지정된 프로토콜, IP 및 포트에서의 통신을 금지합니다. 다음 옵션 중 어떤 것을 사용해야 할지 디자인 결정을 내리는 데 어려움을 겪고 있습니다.

  1. PowerShell(예: 다음에 설명됨)https://technet.microsoft.com/en-us/library/jj554906(v=wps.630).aspx. 이 옵션의 문제점은 (틀렸다면 수정해주세요) Windows 7에서는 지원되지 않는 것 같지만 도구는 Windows 7, Windows 8(.1) 및 바람직하게는 이후 버전의 Windows에서 작동해야 한다는 것입니다. 또한 C#을 사용할 수 없습니다. 반면 PowerShell은 PowerShell 프로세스를 호출하여 명령줄 옵션을 제공하고 출력/입력에서 읽기/쓰기를 통한 경우를 제외하고(아마도 잘 모르겠습니다) C++와 통합되지 않습니다. 스트림.
  2. "netsh advfirewall 방화벽" 방식. 이 옵션의 문제점은 Windows 8.1에서 "netsh advfirewall" 컨텍스트가 더 이상 사용되지 않으며 이후 버전의 Windows에서 제거될 수 있다는 것입니다. 따라서 이 방법을 사용하면 내 도구가 Windows 9 또는 10에서 작동하지 않게 될까봐 걱정됩니다.
  3. 이 예에서와 같이 Windows 방화벽의 COM 인터페이스https://msdn.microsoft.com/en-us/library/windows/desktop/dd339604(v=vs.85).aspx. 필수 C++ 코딩은 문제가 되지 않지만 PowerShell이나 명령줄(netsh advfirewall 방화벽)을 사용하는 것보다 시간이 더 걸릴 수 있습니다.

Windows 방화벽 규칙을 추가/삭제하기 위한 최선의 설계 결정은 무엇입니까? 내가 나열한 옵션의 다른 옵션이나 장점/단점이 있습니까?

답변1

Windows 7의 경우 방법이 다릅니다.

Server 2008/Vista/Server R2/Windows 7의 방화벽과 관련된 모든 것은 HNetCfg.FwPolicy2 COM 개체를 통해 관리됩니다.

~에서여기

PowerShell을 사용하고 싶지만 두 OS 버전을 모두 대상으로 해야 하는 경우 Windows 8에서 수행하는 방법을 이미 알고 있는 것 같으므로 두 가지 함수를 작성하는 것이 가장 간단할 것입니다.

관련 정보