Delphi - 映射驱动器ipaddress

时间:2016-09-06 07:15:19

标签: delphi delphi-xe

如何使用Delphi查找映射驱动器的IP地址。我当前的系统使用映射驱动器连接到Pervasive数据库。我正在切换到PostgreSQL并需要映射驱动器的IP地址连接到PostgreSQL服务器。

我在名为HP的计算机上映射了一个文件夹(Y :)。传递Y:到WNetGetConnection会返回机器名称HP,但是当我在GetHostName中使用此值时,它会返回本地计算机的详细信息。

我在Windows10上使用XE7

  LPathStr:=MAX_PATH;
  If WNetGetConnectionA(PAnsiChar('Y:'), PathStr, LPathStr) = 0 then
  begin
    if GetHostName(PathStr,SizeOf(PathStr)) = 0 then
    begin
      varHostEnt := GetHostByName(PathStr);
      varTInAddr.S_addr := u_long(pu_long(varHostEnt^.h_addr_list^)^);
      IpAddr := inet_ntoa(varTInAddr);
      HostName := PathStr;
    end

1 个答案:

答案 0 :(得分:0)

您可以使用WNetGetConnection()WNetGetUniversalName()解析其网络UNC路径的网络映射驱动器号/路径,然后您可以使用DNS查询(gethostbyname()或更好{ {3}})获取UNC路径中指定的服务器名称的IP地址。