我正在尝试编写一个可以确定端口是否被防火墙规则阻止的函数,到目前为止,我发现了一些东西,但它似乎不起作用...... bAllowed
andbRestricted
变量始终设置为 false。
function IsTCPPortAllowed(p_nPort: Integer; p_sAddress: string): Boolean;
var
bAllowed, bRestricted: Boolean;
oFwMgr : OLEVariant;
oResult : HRESULT;
begin
bAllowed := False;
bRestricted := False;
CoInitialize(nil);
try
try
oFwMgr := CreateOLEObject('HNetCfg.FwMgr');
oResult := oFwMgr.IsPortAllowed('', NET_FW_IP_VERSION_V4, p_nPort, p_sAddress, NET_FW_IP_PROTOCOL_TCP, bAllowed, bRestricted);
except
end;
finally
oFwMgr := VarNull;
CoUninitialize;
end;
if oResult = S_OK then
Result := bAllowed and not bRestricted;
end;
我在这里遗漏了什么,或者可能有另一种(更好的)方法来查找端口是否被防火墙阻止?
提前致谢!