win10防火墙微软官方文档地址

微软防火墙文档地址

如果是要开启ping规则

提示:防火墙操作都需要有管理员权限!

windows + x + a(快捷键)打开powershell(管理员身份),输入下面命令

IPV4

netsh advfirewall firewall add rule name= "All ICMP V4" protocol=icmpv4:any,any dir=in action=allow

IPV6

netsh advfirewall firewall add rule name= "All ICMP V6" protocol=icmpv6:any,any dir=in action=allow

完成后就可以ping通了。

如果想要删除防火墙规则
参照格式netsh advfirewall firewall delete rule name="规则名称"
例如:

netsh advfirewall firewall delete rule name="All ICMP V4"
netsh advfirewall firewall delete rule name="All ICMP V6"

开放端口命令格式

netsh advfirewall firewall add rule name= "Open Port 80" dir=in action=allow protocol=TCP localport=80

如果要开放其它端口,模仿上面命令格式进行修改即可

name 是规则名称
protocol 是协议,例如TCP、UDP
dir 是入站/出站规则可以取值 in 或者 out 不能两个同时执行


java操作防火墙

很重要的提醒!!!因为防火墙需要有管理员权限,直接使用cmd无法实现,需要借助第三方工具nircmd.exe

下载然后解压缩:
http://www.nirsoft.net/utils/nircmd-x64.zip

官网:http://www.nirsoft.net/utils/nircmd.html

解压后将nircmd.exe复制到C:\Windows\System32下(也是cmd.exe所在的目录),然后我们继续下面的。

java实现防火墙配置
CmdUtil
import java.io.BufferedReader;
import java.io.IOException;
import java.io.InputStreamReader;
import java.nio.charset.Charset;public class CmdUtil {/*** 执行CMD命令,并返回String字符串*/public static String executeCmd(String strCmd)  {StringBuilder sbCmd = new StringBuilder();try {Process p = Runtime.getRuntime().exec("nircmd.exe elevatecmd runassystem " + strCmd);BufferedReader br = new BufferedReader(new InputStreamReader(p.getInputStream(), Charset.forName("GBK")));String line;while ((line = br.readLine()) != null) {sbCmd.append(line + "\n");}}catch (IOException e){e.printStackTrace();}return sbCmd.toString();}}

cmd执行工具类,需要用到nircmd,请先完成前面的要求

防火墙操作类
public class FireWallBatchOpen {/*** 自定义规则 按照: 协议 ,端口 ,规则名依次填入*/private static String[][] rules = {{"tcp", "21", "ftp"},{"tcp", "22", "ssh"},{"tcp", "3389", "远程桌面"},{"tcp", "3306", "mysql"}};public static void main(String[] args) {CmdUtil.executeCmd("netsh advfirewall reset");// 还原防火墙默认设置addICMPRule();// 让ping能通过for (int i = 0; i < rules.length; i++) {if (rules[i][0].equals("tcp")) {addTcpPortInAndOut(rules[i][1], rules[i][2]);} else {addUdpPortInAndOut(rules[i][1], rules[i][2]);}}}/*** 添加入站规则** @param port     端口* @param protocol 协议* @param name     规则名称*/private static void addPortIn(String port, String protocol, String name) {addPortRule(port, protocol, "in", "allow", name);}/*** 添加出站规则** @param port     端口* @param protocol 协议* @param name     规则名称*/private static void addPortOut(String port, String protocol, String name) {addPortRule(port, protocol, "out", "allow", name);}/*** 添加TCP端口** @param port 端口* @param name 规则的名称*/private static void addTcpPortIn(String port, String name) {addPortIn(port, "TCP", name);}/*** 添加TCP的出站规则** @param port 端口* @param name 规则名称*/private static void addTcpPortOut(String port, String name) {addPortOut(port, "TCP", name);}/*** 添加TCP的in和out规则** @param port 端口* @param name 规则名称*/private static void addTcpPortInAndOut(String port, String name) {addTcpPortIn(port, name);// tcp的进站规则addTcpPortOut(port, name);// tcp的出站规则}/*** 添加UDP端口进站规则** @param port 端口* @param name 规则名称*/private static void addUdpPortIn(String port, String name) {addPortIn(port, "UDP", name);}/*** 添加UDP端口出站规则** @param port 端口* @param name 规则名称*/private static void addUdpPortOut(String port, String name) {addPortOut(port, "UDP", name);}/*** 添加UDP的in和out规则** @param port 端口* @param name 规则名称*/private static void addUdpPortInAndOut(String port, String name) {addUdpPortIn(port, name);// udp的进站规则addUdpPortOut(port, name);// udp的出站规则}/*** 添加防火墙规则** @param port     端口* @param protocol 协议* @param dir      入站或者出站规则,只能取: in 或 out* @param action   允许还是拒绝,allow是允许* @param name     规则名称*/private static void addPortRule(String port, String protocol, String dir, String action, String name) {final StringBuilder command = new StringBuilder("netsh advfirewall firewall add rule name= \"").append(name).append("\" ").append(" dir=").append(dir).append(" action=").append(action).append(" protocol=").append(protocol).append(" localport=").append(port);final String result = CmdUtil.executeCmd(command.toString());System.out.println(result);}/*** ping采用的是icmp协议*/private static void addICMPRule() {String ipv4 = "netsh advfirewall firewall add rule name= \"All ICMP V4\" protocol=icmpv4:any,any dir=in action=allow";String ipv6 = "netsh advfirewall firewall add rule name= \"All ICMP V6\" protocol=icmpv6:any,any dir=in action=allow";final String s = CmdUtil.executeCmd(ipv4);System.out.println(s);final String s1 = CmdUtil.executeCmd(ipv6);System.out.println(s1);}
}

命令行下重置防火墙(管理员权限)

提示防火墙重置要小心操作,一般是防火墙规则比较乱才会进行重置,查看的话可以通过后面的图像界面化方式查看防火墙规则
netsh advfirewall reset

如果你按照我前面的要求,加入了第三方工具nircmd.exe可以不用管理员权限登录终端也能完成

nircmd.exe elevatecmd runassystem netsh advfirewall reset

图像界面化重置防火墙:window + r 输入 wf.msc进行唤出

java操作win10防火墙相关推荐

  1. java 操作 redis_java操作Redis

    10. java操作Redis 10.1 环境准备 1. 引入依赖 redis.clients jedis 2.9.0 2.创建jedis对象 package org.example; import ...

  2. Redis 笔记之 Java 操作 Redis(Jedis)

    Java 操作 Redis 环境准备 引入依赖 创建 jedis 对象 操作 Key 相关 API 操作 String 相关 API 操作 List 相关 API 操作 Set 的相关 API 操作 ...

  3. 云计算大数据之 Java 操作 Kafka

    云计算大数据之 Java 操作 Kafka 版权声明: 本文为博主学习整理原创文章,如有不正之处请多多指教. 未经博主允许不得转载.https://blog.csdn.net/qq_42595261/ ...

  4. 计算机防火墙不能更改,win10防火墙无法更改某些设置怎么回事_win10防火墙无法更改某些设置的解决方法...

    在使用win10正式版的时候弹出Windows防火墙无法更改某些设置错误代码0X8007,怎么办?初学者第一面对这样的问题束手无措,其实出现此故障问题一般是防火墙服务没有启动,只要进入服务界面简单设置 ...

  5. HBase安装配置以及Java操作hbase

    2019独角兽企业重金招聘Python工程师标准>>> Apache HBase Apache HBase™是Hadoop数据库,是一个分布式,可扩展的大数据存储. 当您需要对大数据 ...

  6. w ndows10防火墙在哪,Win10防火墙在哪里,怎么关闭Win10防火墙?

    Win10防火墙在哪里,怎么关闭Win10防火墙?责人不必苛尽,苛尽则众远.普通用户很少与Windows防火墙发生实质性接触,虽然有时候需要临时抱佛脚使用一下,用后不久又会将它抛到九霄云外.再说现在各 ...

  7. Java操作Kafka执行不成功

    使用kafka-clients操作kafka始终不成功,原因不清楚,下面贴出相关代码及配置,请懂得指点一下,谢谢! 环境及依赖 <dependency><groupId>org ...

  8. java操作elasticsearch实现query String

    1.CommonTersQuery: 指定字段进行模糊查询 //commonTermsQuery @Test public void test35() throws UnknownHostExcept ...

  9. java操作dom节点的添加_java操作DOM节点的添加,删除,修改

    java操作DOM节点的添加,删除,修改 下面我们开始对此xml添加,删除,修改:方法一 import java.io.File; import java.io.IOException; import ...

最新文章

  1. 一个接口同时支持 form 表单、form-data、json 的优雅写法
  2. ewebeditor下利用ckplayer增加html5 (mp4)全平台的支持
  3. 计算机网络测试两个主机连通性,计算机网络试卷A
  4. c++中delete对象后 调用成员函数_C++类的特殊成员函数及default/delete特性
  5. 瞄准千亿个护市场,纸业龙头们下半场战役已经打响
  6. win7重装系统后设置Python2.7环境
  7. nginx将9000端口转发映射至 8080
  8. stm32F051系列 单片机引脚定时器输出pwm波形控制风扇转速
  9. mysql 删除赋予用户的权限_深入了解mysql(一)
  10. MacOS入门技巧分享
  11. DCOS之Mesos-DNS介绍
  12. 跨考计算机 经验,跨考计算机成功的“重要”经验_跨考网
  13. Inspect的学习笔记
  14. 毕业论文_页眉+页码
  15. excel小数不同的取整数的方法
  16. 如何撰写专利技术交底书?交底书中有哪些坑?
  17. 开放世界游戏中的大地图的实现——内容制作篇
  18. 苹果申请屏幕防指纹专利 互联网信用体系跨越一大步
  19. Java 数组的输入输出
  20. 纯css实现涟漪效果

热门文章

  1. CleanMyMacX VS 腾讯柠檬,mac清理谁更谁更优秀?一次全面的对比评测
  2. SpringCloud系列--eureka(三)服务发现DiscoveryClient
  3. Altium Designer 21 怎么切换成中文界面
  4. 15个有趣的工具和服务来监控您的Linux服务器
  5. python提取图片中的信息
  6. win10 家庭版下载文件时没有权限保存到某盘的解决方案的完美流程
  7. 反对称矩阵及其矩阵指数函数
  8. 关于开发中小学生学习数学的软件用户调研
  9. ARP协议是做什么的?
  10. 网络层 ARP地址解析协议