2015-11-13 2 views
-1

Windows 7, 8,1Как отключить брандмауэр Windows?

я получаю исключение при попытке отключить брандмауэра Windows. Я пытаюсь сделать это с правами администратора. Но у меня нет той же проблемы для брандмауэра Windows , позволяющего.

Type NetFwMgrType = Type.GetTypeFromProgID("HNetCfg.FwMgr", false); 
INetFwMgr mgr = (INetFwMgr)Activator.CreateInstance(NetFwMgrType); 

// Get the Windows Firewall status 
bool firewallEnabled = mgr.LocalPolicy.CurrentProfile.FirewallEnabled; 

// it works fine... 
String frw_status = "Windows Firewall is " + (firewallEnabled ? 
    "enabled" : "disabled"); 

// Enable or disable firewall. 

// I get the exception here when I try to disable Windows Firewall. 
// I have not problem when I try to enable Windows Firewall (it works fine). 
// 
// Exception message: 
// An unhandled exception of type 'System.NotImplementedException' 
// occurred in net_sandbox.exe 
// Additional information: Method or operation is not emplemented yet.. 
mgr.LocalPolicy.CurrentProfile.FirewallEnabled = false; 

Как отключить брандмауэр Windows?

+0

Что такое «HNetCfg.FwMg» –

+0

Просто предположите, но когда я вижу «net_sandbox.exe», я думаю, что вы не можете ничего сделать, чтобы уменьшить конфигурацию безопасности. У увеличения не было бы такого же ограничения. –

+0

@roryap, https://msdn.microsoft.com/ru-ru/library/windows/desktop/aa365287%28v=vs.85%29.aspx –

ответ

4

Кажется, вы используете COM API Windows XP SP2, который, как известно, имеет проблемы с Windows Vista/7 и более новыми версиями.

Рекомендуется использовать более новый API:

(Я не проверял это)

Type netFwPolicy2Type = Type.GetTypeFromProgID("HNetCfg.FwPolicy2"); 
INetFwPolicy2 mgr = (INetFwPolicy2)Activator.CreateInstance(netFwPolicy2Type); 

// Gets the current firewall profile (domain, public, private, etc.) 
NET_FW_PROFILE_TYPE2_ fwCurrentProfileTypes = (NET_FW_PROFILE_TYPE2_)mgr.CurrentProfileTypes; 

// Get current status 
bool firewallEnabled = mgr.get_FirewallEnabled(fwCurrentProfileTypes); 
string frw_status = "Windows Firewall is " + (firewallEnabled ? 
"enabled" : "disabled"); 

// Disables Firewall 
mgr.set_FirewallEnabled(fwCurrentProfileTypes, false); 
+0

Он отлично работает. Спасибо! –

+0

@AndreyBushman Нет проблем! ;) –

0
private const string CLSID_FIREWALL_MANAGER = 
    "{304CE942-6E39-40D8-943A-B913C40C9CD4}"; 

private static NetFwTypeLib.INetFwMgr GetFirewallManager() 
{ 
    Type objectType = Type.GetTypeFromCLSID(
      new Guid(CLSID_FIREWALL_MANAGER)); 
    return Activator.CreateInstance(objectType) 
      as NetFwTypeLib.INetFwMgr; 
} 

public static void Firewall() 
{ 
    INetFwMgr manager = GetFirewallManager(); 
    bool isFirewallEnabled = manager.LocalPolicy.CurrentProfile.FirewallEnabled; 
    manager.LocalPolicy.CurrentProfile.FirewallEnabled = false; 
} 

И Main.cs

YourClass. Брандмауэр();

Смежные вопросы