본문 바로가기

카테고리 없음

WPF & C# - 방화벽 규칙 추가/삭제/확인 ( FileWallRule Add / Remove )

728x90
반응형
 WPF & C# - 방화벽 규칙 추가 ( FileWallRule Add / Remove)

 

 

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
// C:\Windows\System32\FirewallAPI.dll  참조추가 필요
void firewallRule()
{
    INetFwRule firewallRule = (INetFwRule)Activator.CreateInstance(Type.GetTypeFromProgID("HNetCfg.FWRule"));
    firewallRule.Action = NET_FW_ACTION_.NET_FW_ACTION_ALLOW;
    firewallRule.Description = "방화벽 규칙에 대한 설명을 입력합니다";
    firewallRule.Direction = NET_FW_RULE_DIRECTION_.NET_FW_RULE_DIR_IN;
    firewallRule.ApplicationName = Environment.CurrentDirectory + @"\app.exe";
    firewallRule.InterfaceTypes = "All";
    firewallRule.Name = "Rule name"// 방화벽 규칙을 구분하는 이름, 삭제시에도 사용됩니다
    firewallRule.Enabled = true;
 
    // 규칙추가
    INetFwPolicy2 firewallPolicy = (INetFwPolicy2)Activator.CreateInstance(Type.GetTypeFromProgID("HNetCfg.FwPolicy2"));
    firewallPolicy.Rules.Add(firewallRule);
 
    /* 규칙삭제
    INetFwPolicy2 firewallPolicy = (INetFwPolicy2)Activator.CreateInstance(Type.GetTypeFromProgID("HNetCfg.FwPolicy2"));
    firewallPolicy.Rules.Remove("Rule name");
    */
 
    // 규칙확인
    INetFwPolicy2 firewallPolicy2 = (INetFwPolicy2)Activator.CreateInstance(Type.GetTypeFromProgID("HNetCfg.FwPolicy2"));
    foreach (INetFwRule rule in firewallPolicy2.Rules)
    {
        tbx.Text += rule.Name + "\n";
    }
}
cs

 

참고

http://jongwan.com/csharp-%EC%9C%88%EB%8F%84%EC%9A%B0-%EB%B0%A9%ED%99%94%EB%B2%BD-%EC%B6%94%EA%B0%80%EC%82%AD%EC%A0%9C/

728x90
반응형