绿林科技 发表于 2016-4-30 19:56:35

编程关闭防火墙

编程关闭防火墙,支持Win7以上的32位及64位系统

#include <windows.h>
#include <stdio.h>
#include <netfw.h>


// Forward declarations
HRESULT   WFCOMInitialize(INetFwPolicy2** ppNetFwPolicy2);


int __cdecl main()
{
    HRESULT hrComInit = S_OK;
    HRESULT hr = S_OK;

    INetFwPolicy2 *pNetFwPolicy2 = NULL;

    // Initialize COM.
    hrComInit = CoInitializeEx(
                  0,
                  COINIT_APARTMENTTHREADED
                  );

    // Ignore RPC_E_CHANGED_MODE; this just means that COM has already been
    // initialized with a different mode. Since we don't care what the mode is,
    // we'll just use the existing mode.
    if (hrComInit != RPC_E_CHANGED_MODE)
    {
      if (FAILED(hrComInit))
      {
            printf("CoInitializeEx failed: 0x%08lx\n", hrComInit);
            goto Cleanup;
      }
    }

    // Retrieve INetFwPolicy2
    hr = WFCOMInitialize(&pNetFwPolicy2);
    if (FAILED(hr))
    {
      goto Cleanup;
    }

    // Disable Windows Firewall for the Domain profile
    hr = pNetFwPolicy2->put_FirewallEnabled(NET_FW_PROFILE2_DOMAIN, FALSE);
    if (FAILED(hr))
    {
      printf("put_FirewallEnabled failed for Domain: 0x%08lx\n", hr);
      goto Cleanup;
    }

    // Disable Windows Firewall for the Private profile
    hr = pNetFwPolicy2->put_FirewallEnabled(NET_FW_PROFILE2_PRIVATE, FALSE);
    if (FAILED(hr))
    {
      printf("put_FirewallEnabled failed for Private: 0x%08lx\n", hr);
      goto Cleanup;
    }

    // Disable Windows Firewall for the Public profile
    hr = pNetFwPolicy2->put_FirewallEnabled(NET_FW_PROFILE2_PUBLIC, FALSE);
    if (FAILED(hr))
    {
      printf("put_FirewallEnabled failed for Public: 0x%08lx\n", hr);
      goto Cleanup;
    }

Cleanup:

    // Release INetFwPolicy2
    if (pNetFwPolicy2 != NULL)
    {
      pNetFwPolicy2->Release();
    }

    // Uninitialize COM.
    if (SUCCEEDED(hrComInit))
    {
      CoUninitialize();
    }
   
    return 0;
}


// Instantiate INetFwPolicy2
HRESULT WFCOMInitialize(INetFwPolicy2** ppNetFwPolicy2)
{
    HRESULT hr = S_OK;

    hr = CoCreateInstance(
      __uuidof(NetFwPolicy2),
      NULL,
      CLSCTX_INPROC_SERVER,
      __uuidof(INetFwPolicy2),
      (void**)ppNetFwPolicy2);

    if (FAILED(hr))
    {
      printf("CoCreateInstance for INetFwPolicy2 failed: 0x%08lx\n", hr);
      goto Cleanup;      
    }

Cleanup:
    return hr;
}


交流群1:177822108
交流群2:177822398

绿林科技 发表于 2016-4-30 20:25:47

沙发

Tesla.Angela 发表于 2016-5-1 00:46:35

不编程关闭防火墙,支持XP以上的32位及64位系统。
netsh firewall set opmode mode = disable
页: [1]
查看完整版本: 编程关闭防火墙