问题标签 [windows-firewall-api]
For questions regarding programming in ECMAScript (JavaScript/JS) and its various dialects/implementations (excluding ActionScript). Note JavaScript is NOT the same as Java! Please include all relevant tags on your question; e.g., [node.js], [jquery], [json], [reactjs], [angular], [ember.js], [vue.js], [typescript], [svelte], etc.
c# - 如何使用 Windows 防火墙 API 为应用商店应用设置规则?
所以我已经很清楚如何使用COM 接口以编程INetFwPolicy2
方式设置防火墙规则。INetFwRule
但是,如何使用 COM 互操作为特定的“现代应用程序”/“地铁应用程序”/“商店应用程序”设置规则?
如果我使用防火墙 MMC,我可以访问:
规则 -> 属性 -> 程序和服务 -> 应用程序包
并在那里允许/阻止指定的包。但我不知道如何在代码中做到这一点。我找到了INetFwRule3
提供LocalAppPackageId
属性的接口,我认为这是所有的魔法。但是LocalAppPackageId
包含包的 SID 而不是它的名称microsoft.windows.photos_8wekyb3d8bbwe
,例如。那么,当我只知道它的名称时,我怎么能阻止我想要的包呢?我想我必须获得 SID,那么我该如何找到它呢?SID 的范围是本地的(每台机器唯一),还是我可以在找到 SID 后对其进行硬编码而不费心动态查找 SID?
windows - 新的 Windows 防火墙规则会影响当前打开的连接吗?
如果我向 Windows 防火墙添加了一条规则,该规则阻止了打开的连接当前使用的 ip 或端口,该规则是立即生效还是仅在连接关闭后生效?
即,如果我有一个打开的 ssh 会话,然后阻止端口 22,这会终止我的 ssh 会话、阻止连接上的流量但保持会话打开,还是只阻止未来的 ssh 连接尝试?
interop - 使用 NET_FW_SERVICE_REMOTE_DESKTOP 类型的 INetFwServices 中的灾难性故障(HRESULT 异常:0x8000FFFF (E_UNEXPECTED))
我正在尝试在 Windows 10 中的 INetFwServices 元素中进行迭代。但是,当我访问项目服务名称:“远程桌面”类型:NET_FW_SERVICE_REMOTE_DESKTOP 时,应用程序会引发异常灾难性故障(来自 HRESULT 的异常:0x8000FFFF (E_UNEXPECTED))。
firewall.LocalPolicy.CurrentProfile.Services 集合返回 3 项:1. 文件和打印机共享 2. 网络发现 3. 远程桌面
当我阅读第三项“远程桌面”以获取其 GloballyOpenPorts 时发生错误。
在 Windows 7 中,此类型 NET_FW_SERVICE_REMOTE_DESKTOP 可以正常工作,但在 Windows 10 中失败。如何在 Windows 10 中读取服务名称的 GloballyOpenPorts:“远程桌面”?
StackTrace:在 NetFwTypeLib.INetFwService.get_GloballyOpenPorts() 在 c:\Users\Smartmatic\Documents\Visual Studio 2012\Projects\FirewallCustomTest\FirewallCustomTest\Firewall.cs:line 178 中的 FirewallCustomTest.Firewall.isPortFound(Int32 portNumber)
windows-firewall - 在标准用户中添加到 Windows 防火墙例外
我正在尝试将应用程序添加到 Windows 防火墙异常。我不想给 EXE 管理员权限。
我尝试了如下的 netsh 命令。
但这需要管理权限。
有没有办法在没有管理员权限的情况下添加到防火墙例外?
我认为这是可能的,因为我有一个应用程序可以这样做。
我正在使用 Talley ERP 9,它在没有管理员权限的情况下将自身添加到防火墙异常中。当我运行 Talley 时,它会弹出一条消息,如下所示。
如果我单击任一选项(“允许访问”或“取消”),Tally 将被添加到防火墙例外中。这适用于管理员和非管理员用户。
我跟踪了该 exe 所做的更改,发现注册表项中添加了值,
ERP 9 如何在没有管理员权限的情况下添加防火墙例外?
我在理货 ERP 9 路径中也找不到任何清单文件。
c# - Unable to cast COM object of type 'System.__ComObject' with STAThread attribute
I wrote a Windows Service that use Firewall COM library Interop.NetFwTypeLib
to manage rules for TCP transmission. Deployments on two machine don't report problems but I install it recently on another computer and receive the exception:
Unable to cast COM object of type 'System.__ComObject' to interface type 'NetFwTypeLib.INetFwRule3'. This operation failed because the QueryInterface call on the COM component for the interface with IID '{B21563FF-D696-4222-AB46-4E89B73AB34A}' failed due to the following error: No such interface supported (Exception from HRESULT: 0x80004002 (E_NOINTERFACE))
After read this posts:
- Exception from HRESULT: 0x80004002 (E_NOINTERFACE)
- Why cannot I cast my COM object to the interface it implements in C#
- InvalidCastException , Exception from HRESULT: 0x80004002 (E_NOINTERFACE)
I set STAThreadAttribute
to the Main method of this code to test if with this I resolve the problem, but without any solution:
I was surprised went I run this script to find the CLSID on registry, and don't return any result on both computers, where works and does not work.:
These are the information from the computer where the service works:
Information from the computer where the service fails:
QUESTIONS:
- It can be the difference of version of FirewallAPI.dll what causes the problem?
- If so would suffice to update dll, although it seems a bit dangerous by possible inconsistents on the registry?
windows-firewall - C# - 使用多配置文件创建 Windows 防火墙规则
我正在使用INetFwRule创建 Windows 防火墙规则。我希望这条规则适用于域和私人资料,但适用于公共资料。但Profiles属性不支持。
请帮忙。
windows - 使用适用于服务运行的所有应用程序的 Windows 防火墙 API 创建规则
我正在尝试为 Windows 服务设置防火墙规则,以拒绝所有入站和出站 TCP 和 UDP 连接,除了使用 Windows 服务强化 API 的主机和端口白名单,遵循此处的 VBScript 示例。
现在,这个服务可能会产生新的进程(因为它是一个持续集成构建和测试代理),所以仅仅像上面的示例脚本中那样设置是不够NewOutboundRule.ApplicationName = "%systemDrive%\WINDOWS\system32\svchost.exe"
的——我需要一个规则来应用到该服务运行的所有应用程序。
但是,如果我尝试设置一个新的入站规则,其中ApplicationName
未在接口上指定所谓的可选属性INetFw
,则添加新规则的调用将失败(在wshRules.Add NewOutboundRule
上面脚本中的行)。其他一切都正确,好像我指定了ApplicationName
,调用成功。
是否有某种方法可以创建适用于 的所有可能值的规则ApplicationName
,或者另一种方法?
c# - 使用 C# 打开和关闭防火墙
我编写了一个 C# 程序,它使用命令行参数来打开和关闭防火墙。
我还以管理员权限运行该应用程序。该应用程序会自动以管理员权限运行,但不会将防火墙状态设置为打开或关闭。
当我在 cmd(netsh) 中运行相同的命令时,防火墙会打开或关闭。
有谁知道为什么这不起作用?
windows-firewall-api - 如何设置 INetFwPolicy2::ExcludedInterfaces 属性
我实现了处理 Windows 防火墙 API 的基本库。我在财产方面遇到了奇怪的结果INetFwPolicy2::ExcludedInterfaces
。我通过设置排除接口Firewall.cpl
,当读取属性时,我得到了一些 guid 数组。我不确定这个 GUID 是从哪里来的。它不是接口 GUID。我从中选择所有接口Win32_NetworkAdapter
,但没有这样的 GUID。此外,当我尝试重新分配这个值时,我得到了无效的参数或未找到错误。此代码基于在VBS 上编写的msdn 示例,但我在 C 上遇到相同的错误真的没关系。原始示例也不起作用。
c# - Windows 防火墙规则不起作用 - 防火墙 API - C#
我编写了一个用 C# 编码的小型聊天程序。它使用 WCF 与本地网络中的其他用户进行通信。此外,它使用 System32 中的防火墙 API dll 添加 4 条规则,允许该程序的所有端口用于传入/传出 TCP 和 UDP 连接。此规则将它们自己添加到当前网络配置(公共、私有)中。当程序关闭时,它会删除 4 条规则。问题是,防火墙会忽略此规则并丢弃传入的数据。当我在两台电脑(正在通信的两台电脑)上停用防火墙时,它可以正常工作。防火墙激活了这 4 条规则,但我真的不明白为什么防火墙会丢弃传入的数据......
在 4 台不同的 Windows 10 机器上测试。在我认为 1,5 小时后,防火墙规则在一台机器上运行,这也让我感到困惑......
这是我创建此规则的方法:
来自服务器程序防火墙的日志显示防火墙丢弃了来自客户端的传入 TCP 数据(TCP 的服务器端口是 2310,TCP 的客户端端口是随机/未知的):
该规则已在 Windows 防火墙中注册(抱歉操作系统是德语):