在 Windows 10 上使用“HNetCfg.NATUPnP”进行端口转发

问题描述

我正在使用 Delphi XE3 并尝试使用“HNetCfg.NATUPnP”创建端口转发 (UPnP)。经过一些研究,这是我目前得到的:

function PortMapAdd(const ExtPort,IntPort: DWORD;
  const IPAdd,Protocol,Descript: string): Boolean;
var
  Nat,Ports: Variant;
begin
  Result := False;
  try
    CoInitialize(nil);
    try
      Nat := CreateOleObject('HNetCfg.NATUPnP');
      Ports := Nat.StaticPortMappingCollection;
      if not VarIsClear(Ports) then
      begin
        Ports.Add(ExtPort,UpperCase(Protocol),IntPort,IPAdd,True,Descript);
        Result := True;
      end;
    finally
      CoUninitialize;
    end;
  except
    on E:Exception do raise;
  end;
end;

以上代码在 Windows 7 上运行良好,但在 Windows 10 上 VarIsClear 总是返回 true

Application-UPnP 在我的路由器配置中启用,UPnP User Interface (network discovery) 在 Windows 10 中启用。

请问,我还需要检查其他配置吗?或者代码可能与 Windows 10 不兼容?感谢您的帮助,谢谢!

解决方法

暂无找到可以解决该程序问题的有效方法,小编努力寻找整理中!

如果你已经找到好的解决方法,欢迎将解决方案带上本链接一起发送给小编。

小编邮箱:dio#foxmail.com (将#修改为@)