2014-04-09 3 views
1

Windows 방화벽에 규칙을 추가하기 위해 firewall.dll을 사용하는 코드가 있지만 "액세스가 거부되었습니다. (예외는 HRESULT : 0x80070005 (E_ACCESSDENIED))" this 내 코드 :firewall.dll 등록 정보를 사용하면 Acces denied 오류가 발생합니다. (HRESULT 예외 : 0x80070005 (E_ACCESSDENIED))

using NetFwTypeLib; 
namespace Tserver 
{ 
    class Program 
    { 
    static void Main(string[] args) 
    { 

     INetFwRule firewallRule = (INetFwRule)Activator.CreateInstance(
     Type.GetTypeFromProgID("HNetCfg.FWRule")); 
        firewallRule.Action = NET_FW_ACTION_.NET_FW_ACTION_BLOCK; 
     firewallRule.Description = "Used to block all internet access."; 
     firewallRule.Direction = NET_FW_RULE_DIRECTION_.NET_FW_RULE_DIR_OUT; 
     firewallRule.Enabled = true; 
     firewallRule.InterfaceTypes = "All"; 
     firewallRule.Name = "Block Internet"; 

     INetFwPolicy2 firewallPolicy = (INetFwPolicy2)Activator.CreateInstance(
      Type.GetTypeFromProgID("HNetCfg.FwPolicy2")); 
     firewallPolicy.Rules.Add(firewallRule); 
} 
+0

현재 운영 체제 사용자에게 관리자 권한이 있습니까? –

+0

고도의 보안 수준이 필요합니다. UAC 등을 의미합니다. Btw는 코드로 방화벽 설정을 실제로 변경하려는 경우 두 번 생각해야합니다. –

답변

1

당신이하고있는 일을하려면 관리자 권한이 있어야합니다.

나는 클라이언트 머신에서 같은 문제를 겪었지만 관리자 권한 (Windows 7)이있는 머신에서 똑같은 작업을 시도하자 모든 것이 완벽하게 작동했습니다.

관련 문제