关于WFP中AppContainerLoopback过滤器的全局禁用或添加高优先级全局允许规则的技术咨询
关于WFP中AppContainerLoopback过滤器的全局禁用或添加高优先级全局允许规则的技术咨询
嘿,我完全懂你现在的困扰——UWP AppContainer默认被Windows过滤平台(WFP)的AppContainerLoopback过滤器拦死,连不上本地Win32服务,官方文档还写得像天书一样难啃。既然你的机器是测试专用、完全不用考虑安全限制,那我给你两个直接落地的方案:
方案一:直接删除目标WFP阻止过滤器
你已经拿到了这个过滤器的ID(126355),直接用管理员权限的命令提示符执行以下命令就能删掉它:
netsh wfp delete filter id=126355
如果担心ID在你的系统上有变化,可以先执行这条命令确认过滤器信息:
netsh wfp show filters | findstr /i "AppContainerLoopback"
找到对应的ID后再执行删除命令即可。删掉之后,所有AppContainer应用就能正常访问localhost的服务了。
方案二:添加高优先级全局允许规则(替代删除)
如果你不想删掉原有规则,而是想加一条优先级更高的允许规则覆盖它,可以用管理员权限执行以下步骤:
- 先导出当前WFP规则到一个XML文件:
netsh wfp export policy filename="wfp-policy.xml"
- 打开这个XML文件,找到你提到的那个
AppContainerLoopback阻止规则(ID为126355),在同一个<filters>节点下添加一条新的允许规则,确保它的weight值比原有规则小(因为WFP规则权重越小优先级越高,原有规则权重是18446744073709551614,你可以设为100),并且条件匹配Loopback流量且允许AppContainer应用访问:
<filter> <filterId>126356</filterId> <displayName>Global AppContainer Loopback Allow</displayName> <description>Allow all AppContainer apps to access loopback addresses</description> <providerKey>{b2b3f03d-0c98-4e3e-8d6c-1b2f4a0e4778}</providerKey> <providerData></providerData> <flags>0x0</flags> <layerKey>FWPM_LAYER_ALE_AUTH_RECV_ACCEPT_V4</layerKey> <subLayerKey>MICROSOFT_DEFENDER_SUBLAYER_WSH</subLayerKey> <weight type="UINT64">100</weight> <condition> <conditionKey>FWPM_CONDITION_FLAGS</conditionKey> <matchType>FWP_MATCH_FLAGS_ALL_SET</matchType> <flags>FWP_CONDITION_FLAG_IS_LOOPBACK</flags> </condition> <condition> <conditionKey>FWPM_CONDITION_ALE_USER_ID</conditionKey> <matchType>FWP_MATCH_EQUAL</matchType> <sid>S-1-15-3</sid> </condition> <action> <type>FWP_ACTION_PERMIT</type> <filterConditionActionMask>0x0</filterConditionActionMask> </action> <reserved>0</reserved> </filter>
- 保存修改后的XML,再导入回WFP:
netsh wfp import policy filename="wfp-policy.xml"
这个规则会优先于原有的阻止规则生效,让所有AppContainer应用都能访问localhost。
另外提一句,你之前试过的单个应用豁免(比如CheckNetIsolation命令)只针对特定UWP包,不适合全局场景,所以对你的需求没用很正常。
备注:内容来源于stack exchange,提问作者Digika




