今天用户反馈了一个问题,运行程序弹了个框

这个只有程序第一次运行会出来,之后就不会了。

当然改个程序名字,又会弹出来。

强烈怀疑是写到了注册表,果然被我找到了。

“HKEY_LOCAL_MACHINE\SYSTEM\ControlSet002\services\SharedAccess\Parameters\FirewallPolicy\FirewallRules”里面有详细信息

(每个人可能不一样,cmd打开regedit,ctrl+f,搜程序路径即可)

我模仿着加了一条。(改了程序名字和路径),结果没鸟用。

找了一下午之后,终于找到了解决方法

netsh advfirewall firewall 这个可以

netsh advfirewall firewall add rule ?

用法: add rule name=<string>
dir=in|out
action=allow|block|bypass
[program=<program path>]
[service=<service short name>|any]
[description=<string>]
[enable=yes|no (default=yes)]
[profile=public|private|domain|any[,...]]
[localip=any|<IPv4 address>|<IPv6 address>|<subnet>|<range>|<list>]
[remoteip=any|localsubnet|dns|dhcp|wins|defaultgateway|
<IPv4 address>|<IPv6 address>|<subnet>|<range>|<list>]
[localport=0-65535|<port range>[,...]|RPC|RPC-EPMap|IPHTTPS|any (default=a
ny)]
[remoteport=0-65535|<port range>[,...]|any (default=any)]
[protocol=0-255|icmpv4|icmpv6|icmpv4:type,code|icmpv6:type,code|
tcp|udp|any (default=any)]
[interfacetype=wireless|lan|ras|any]
[rmtcomputergrp=<SDDL string>]
[rmtusrgrp=<SDDL string>]
[edge=yes|deferapp|deferuser|no (default=no)]
[security=authenticate|authenc|authdynenc|authnoencap|notrequired
(default=notrequired)]

备注:

- 将新的入站或出站规则添加到防火墙策略。
- 规则名称应该是唯一的,且不能为 "all"。
- 如果已指定远程计算机或用户组,则 security 必须为
authenticate、authenc、authdynenc 或 authnoencap。
- 为 authdynenc 设置安全性可允许系统动态协商为匹配
给定 Windows 防火墙规则的通信使用加密。
根据现有连接安全规则属性协商加密。
选择此选项后,只要入站 IPSec 连接已设置安全保护,
但未使用 IPSec 进行加密,计算机就能够接收该入站连接的第一个 TCP 或
UDP 包。
一旦处理了第一个数据包,服务器将重新协商连接并对其进行升级,以便所
有后续通信都完全加密。
- 如果 action=bypass,则 dir=in 时必须指定远程计算机组。
- 如果 service=any,则规则仅应用到服务。
- ICMP 类型或代码可以为 "any"。
- Edge 只能为入站规则指定。
- AuthEnc 和 authnoencap 不能同时使用。
- Authdynenc 仅当 dir=in 时有效。
- 设置 authnoencap 后,security=authenticate 选项就变成可选参数。

示例:

为不具有封装的 messenger.exe 添加入站规则:
netsh advfirewall firewall add rule name="allow messenger"
dir=in program="c:\programfiles\messenger\msmsgs.exe"
security=authnoencap action=allow

为端口 80 添加出站规则:
netsh advfirewall firewall add rule name="allow80"
protocol=TCP dir=out localport=80 action=block

为 TCP 端口 80 通信添加需要安全和加密的入站规则:
netsh advfirewall firewall add rule
name="Require Encryption for Inbound TCP/80"
protocol=TCP dir=in localport=80 security=authdynenc
action=allow

为 messenger.exe 添加需要安全的入站规则:
netsh advfirewall firewall add rule name="allow messenger"
dir=in program="c:\program files\messenger\msmsgs.exe"
security=authenticate action=allow

为 SDDL 字符串标识的组 acmedomain\scanners 添

最后,我写的脚本如下:

netsh advfirewall firewall add rule name="test" dir=in program="E:\项目相关\代码\kuasheng\bin\test12.exe" security=authnoencap action=allow

郁闷,a.bat

set exename=%1
set exename=%exename:"=%
set exepath=%2
set exepath=%exepath:"=%
set mycmd="netsh advfirewall firewall show rule name=%1"

for /f "delims=" %%a in ('%mycmd%') do (
echo %%a | findstr /c:"%exename%" && goto finish || goto job
)

:job
echo not exist
netsh advfirewall firewall add rule name="%exename%" dir=in program="%exepath%" security=authnoencap action=allow
:finish
pause

执行WinExec("a.bat test E:/项目相关/代码/kuasheng/bin/test12.exe",SW_SHOW);

报错 包含无效的字符或长度

netsh advfirewall firewall add rule name="test" dir=in program="E:/项目相关/代码/kuasheng/bin/test12.exe" security=authnoencap action=allow

正常,原因不明。。郁闷。

另外win10 需要提升脚本权限

@echo off
title 获取管理员权限
mode con cols=100 lines=20
color 3f

:: 开始获取管理员权限
setlocal
set uac=~uac_permission_tmp_%random%
md "%SystemRoot%\system32\%uac%" 2>nul
if %errorlevel%==0 ( rd "%SystemRoot%\system32\%uac%" >nul 2>nul ) else (
echo set uac = CreateObject^("Shell.Application"^)>"%temp%\%uac%.vbs"
echo uac.ShellExecute "%~s0","","","runas",1 >>"%temp%\%uac%.vbs"
echo WScript.Quit >>"%temp%\%uac%.vbs"
"%temp%\%uac%.vbs" /f
del /f /q "%temp%\%uac%.vbs" & exit )
endlocal
:: 完成获取,下面可以开始写你自己的代码了

echo.
echo 原理:先尝试在系统目录下临时新建一个文件夹,若已获取管理员权限或是运行在XP等不需要管理员权限的
echo 老系统时,是可以新建成功的,此时只需删除这个临时新建的文件夹就好了,否则通过创建一个临时
echo vbs脚本获取管理员权限,然后再删除这个临时vbs脚本文件。
echo.
echo 提示:当获取管理员目录后,你的批处理运行目录会发生变化,为保证目录准确,
echo 可通过 cd 切换目录,例“cd /d %%~dp0”切换回批处理所在目录
echo.
echo 当前运行目录: %cd%\
echo 批处理所在目录:%~dp0
echo.
echo 例:切换回批处理所在目录
echo cd /d %%~dp0
echo.

cd /d %~dp0

REM 把你需要运行的脚本放到下面就可以了

用 程序 解决 windows防火墙 的 弹窗 问题的更多相关文章

  1. 解决windows防火墙无法启动的问题

    windows防火墙突然无法开启,找个各种方法,最后还是通过微软自动的修复工具修复的: 网址如下: https://support.microsoft.com/zh-cn/mats/windows_f ...

  2. 解决WINDOWS防火墙开启后Ping不通

    WINDOWS系统由于安全考虑,当开启防火墙时,默认不允许外主机对其进行ping功能,即别的电脑ping不通本机.别的主机ping不通本机是因为本机的防火墙关闭了ICMP回显功能,只要把这回显功能打开 ...

  3. 快速解决:windows安装程序无法将windows配置为在此计算机的硬件上运行

    用手工运行msoobe.ext启用配置的方法, 快速解决:windows安装程序无法将windows配置为在此计算机的硬件上运行   我自己安装碰到的是蓝色这个错误,下面这个也有网友说用安装驱动等方法 ...

  4. Qt开发程序在Windows 10应用须要管理员执行的解决思路

    Qt开发程序在Windows 10应用须要管理员执行的解决思路 过了非常长的时间没有公布博客了.可是我依旧努力地开发Qt程序.眼下呢.我发现开发Qt程序在Windows 10上有一个怪现象--有些程序 ...

  5. 【转】玩玩你的Windows防火墙——穿透与防御

    前言:在防火墙专区,我经常看见朋友们讨论,“某某防火墙的性能如何”,亦或是,“某某防火墙的防御能力如何”.实际上,一个防火墙所履行的基本职责便是“网络访问控制”,即放行我们允许的通信,阻止我们未允许的 ...

  6. 服务器安全策略之《启用Windows 防火墙情况下配置允许SQL Server远程连接》

    为了服务器的安全,通常情况下我们需要启用Windows 防火墙,然而在启用了Windows 防火墙后会发现会引发一系列的问题,比如无法通过本地远程服务器桌面.无法在本地远程连接SQL Server等, ...

  7. win7 创建vhd提示“找不到指定文件的虚拟磁盘支持提供程序”解决方法

    本文参照:https://itbbs.pconline.com.cn/diy/16509116_2.html 14楼中"坚持不放弃"用户的答案得到解决 问题复现: 1.window ...

  8. 如何配置Windows 防火墙,允许SQL Server的远程连接

    一.如何找到SQL Server正在侦听的TCP端口,可以按一下步骤: 1.打开 SQL Server 配置管理器中,从开始->所有程序-> Microsoft SQL Server 20 ...

  9. 黄聪:使用srvany.exe将任何程序作为Windows服务运行

    srvany.exe是什么? srvany.exe是Microsoft Windows Resource Kits工具集的一个实用的小工具,用于将任何EXE程序作为Windows服务运行.也就是说sr ...

随机推荐

  1. shell_umask用法

    我曾经用touch命令创建一个文件script,默认的权限是"rw-r- -r- -",有的朋友就有可能问为什么是这种组合?其实,这正是umask命令捣的鬼.在linux上输入:u ...

  2. 微信小程序开发--页面结构

    一.微信小程序开发--页面文件组成 [page.name].js 页面逻辑文件,用于创建页面对象,以及处理页面生命周期控制和数据处理 [page.name].wxml wxml指的是Wei Xin M ...

  3. Java编程思想:XML

    /* 本次实验需要在www.xom.nu上下载XOM类库 */ import nu.xom.*; import java.io.BufferedOutputStream; import java.io ...

  4. 文件传输——TCP/IP协议介绍总结

    一.链路层 数据链路层的工作特性: 1.为IP模块发送和接收IP数据报2.为ARP模块发送ARP请求和接收ARP应答(ARP:地址解析协议,将IP地址转换成MAC地址)3.为RARP发送RARP请求和 ...

  5. 和朱晔一起复习Java并发(三):锁(含锁性能测试)

    这个专题我发现怎么慢慢演化为性能测试了,遇到任何东西我就忍不住去测一把.本文我们会大概看一下各种锁数据结构的简单用法,顺便也会来比拼一下性能. 各种并发锁 首先,我们定一个抽象基类,用于各种锁测试的一 ...

  6. Mybatis方法入参处理

    1,在单个入参的情况下,mybatis不做任何处理,#{参数名} 即可,甚至连参数名都可以不需要,因为只有一个参数,或者使用 Mybatis的内置参数 _parameter. 2,多个入参: 接口方法 ...

  7. Spring框架之IoC和AOP

    Spring框架简介: 2003年2月,Spring框架正式成为一个开源项目,并发布于SourceForge中.致力于Java EE应用的各种解决方案,而并不是仅仅专注于某一层的方案,是企业应用开发的 ...

  8. [03] HEVD 内核漏洞之UAF

    作者:huity出处:https://www.cnblogs.com/huity35/p/11240997.html版权:本文版权归作者所有.文章在博客园.个人博客同时发布.转载:欢迎转载,但未经作者 ...

  9. MetInfo企业网站管理系统 5.3 全新安装

    在phpStudy\PHPTutorial\WWW的文件下创建MetInfo文件夹.把MetInfo5.3解压到MetInfo文件夹里 用浏览器访问127.0.0.1/MetInfo 同意安装 下一步 ...

  10. python面向对象-封装-property-接口-抽象-鸭子类型-03

    封装 什么是封装: # 将复杂的丑陋的隐私的细节隐藏到内部,对外提供简单的使用接口 或 # 对外隐藏内部实现细节,并提供访问的接口 为什么需要封装 1.为了保证关键数据的安全性 2.对外部隐藏内部的实 ...