找回密码
 加入我们

QQ登录

只需一步,快速开始

搜索
查看: 4568|回复: 2

编程关闭防火墙

[复制链接]

5

主题

103

回帖

0

精华

铜牌会员

积分
252
发表于 2016-4-30 19:56:35 | 显示全部楼层 |阅读模式
编程关闭防火墙,支持Win7以上的32位及64位系统

  1. #include <windows.h>
  2. #include <stdio.h>
  3. #include <netfw.h>


  4. // Forward declarations
  5. HRESULT     WFCOMInitialize(INetFwPolicy2** ppNetFwPolicy2);


  6. int __cdecl main()
  7. {
  8.     HRESULT hrComInit = S_OK;
  9.     HRESULT hr = S_OK;

  10.     INetFwPolicy2 *pNetFwPolicy2 = NULL;

  11.     // Initialize COM.
  12.     hrComInit = CoInitializeEx(
  13.                     0,
  14.                     COINIT_APARTMENTTHREADED
  15.                     );

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

  27.     // Retrieve INetFwPolicy2
  28.     hr = WFCOMInitialize(&pNetFwPolicy2);
  29.     if (FAILED(hr))
  30.     {
  31.         goto Cleanup;
  32.     }

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

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

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

  54. Cleanup:

  55.     // Release INetFwPolicy2
  56.     if (pNetFwPolicy2 != NULL)
  57.     {
  58.         pNetFwPolicy2->Release();
  59.     }

  60.     // Uninitialize COM.
  61.     if (SUCCEEDED(hrComInit))
  62.     {
  63.         CoUninitialize();
  64.     }
  65.    
  66.     return 0;
  67. }


  68. // Instantiate INetFwPolicy2
  69. HRESULT WFCOMInitialize(INetFwPolicy2** ppNetFwPolicy2)
  70. {
  71.     HRESULT hr = S_OK;

  72.     hr = CoCreateInstance(
  73.         __uuidof(NetFwPolicy2),
  74.         NULL,
  75.         CLSCTX_INPROC_SERVER,
  76.         __uuidof(INetFwPolicy2),
  77.         (void**)ppNetFwPolicy2);

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

  83. Cleanup:
  84.     return hr;
  85. }
复制代码


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

5

主题

103

回帖

0

精华

铜牌会员

积分
252
 楼主| 发表于 2016-4-30 20:25:47 | 显示全部楼层
沙发

857

主题

2632

回帖

2

精华

管理员

此生无悔入华夏,  长居日耳曼尼亚。  

积分
36130
发表于 2016-5-1 00:46:35 | 显示全部楼层
编程关闭防火墙,支持XP以上的32位及64位系统。
netsh firewall set opmode mode = disable
您需要登录后才可以回帖 登录 | 加入我们

本版积分规则

快速回复 返回顶部 返回列表