INetFwMgr::IsPortAllowed 方法 (netfw.h)

[Windows 防火墙 API 可用于“要求”部分中指定的操作系统。 它可能在后续版本中变更或不可用。 对于 Windows Vista 及更高版本,建议使用 具有高级安全性 API 的 Windows 防火墙 。]

确定应用程序是否可以侦听指定端口上的入站流量。

语法

HRESULT IsPortAllowed(
  [in]  BSTR               imageFileName,
  [in]  NET_FW_IP_VERSION  ipVersion,
  [in]  LONG               portNumber,
  [in]  BSTR               localAddress,
  [in]  NET_FW_IP_PROTOCOL ipProtocol,
  [out] VARIANT            *allowed,
  [out] VARIANT            *restricted
);

参数

[in] imageFileName

在网络上侦听的进程的图像文件名。 它必须是完全限定的路径,但可能包含环境变量。 如果 imageFileNameNULL,则该函数将确定是否允许所有应用程序使用端口。

[in] ipVersion

流量的 IP 版本。 如果 localAddress 为非 NULL,则不得 NET_FW_IP_VERSION_ANY

[in] portNumber

流量的本地 IP 端口号。

[in] localAddress

指定流量本地地址的点十进制 IPv4 地址或 IPv6 十六进制地址。 通常,这是传递给绑定的地址。 如果 localAddressNULL,则该函数将确定是否允许所有接口使用端口。

[in] ipProtocol

流量的 IP 协议, NET_FW_IP_PROTOCOL_TCPNET_FW_IP_PROTOCOL_UDP

[out] allowed

指示值 VARIANT_TRUE 或 VARIANT_FALSE是否允许端口用于至少一些本地接口和远程地址。

[out] restricted

通过值VARIANT_TRUE或VARIANT_FALSE指示此端口是否阻止了某些本地接口或远程地址。 例如,如果端口仅限于本地子网。

返回值

C++

返回代码 说明
E_ACCESSDENIED
由于权限问题,操作已停止。
E_INVALIDARG
方法失败,因为参数无效。
E_OUTOFMEMORY
方法无法分配所需的内存。
E_POINTER
方法失败,因为指针无效。
 

VB

如果方法成功,则返回值S_OK。

如果方法失败,则返回值为以下错误代码之一。

返回代码 说明
E_ACCESSDENIED
由于权限问题,操作已停止。
E_INVALIDARG
方法失败,因为参数无效。
E_OUTOFMEMORY
方法无法分配所需的内存。
E_POINTER
方法失败,因为指针无效。

注解

通常建议使用 INetFwPolicy2::IsRuleGroupEnabled 方法代替此方法。

IsPortAllowed 方法检查当前防火墙配置是否允许流量用于:

  • 特定应用程序。
  • 特定端口。
  • 特定端口上的特定应用程序。

在其操作中,IsPortAllowed 会考虑防火墙当前是启用还是禁用,应用程序是否允许在当前配置文件例外列表中,是否在当前配置文件例外列表中允许该端口,是否已启用文件和打印共享选项,以及是否已启用远程管理选项。

由于在确定是否允许某个端口时有许多因素,因此通过此方法的输入参数提供的更具体的信息越有可能返回具有有意义限制的明确结果。

要求

要求
最低受支持的客户端 Windows Vista、Windows XP 和 SP2 [仅限桌面应用]
最低受支持的服务器 Windows Server 2003 SP1 [仅限桌面应用]
目标平台 Windows
标头 netfw.h
DLL FirewallAPI.dll;使用 SP2 在 Windows XP 上 Hnetcfg.dll

另请参阅

INetFwMgr

NET_FW_IP_PROTOCOL

NET_FW_IP_VERSION