ポートがファイアウォール ルールによってブロックされているかどうかを判断できる関数を作成しようとしていbAllowed
ますbRestricted
。
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;
ここで何か不足していますか、それともポートがファイアウォールによってブロックされているかどうかを確認する別の (より良い) 方法があるのでしょうか?
前もって感謝します!