首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >不使用GetHostByName从DNS获取IP地址

不使用GetHostByName从DNS获取IP地址
EN

Stack Overflow用户
提问于 2013-03-07 02:56:57
回答 1查看 5.7K关注 0票数 12

我正在使用GetHostByName从主机/DNS获取IP地址。我也有卡巴斯基互联网安全2013,并注意到GetHostByName被它选中。似乎我的进程试图在hklm\SYSTEM\CONTROLSET001\SERVICES\TCPIP\PARAMETERS中创建一个子键。这实际上意味着,如果用户没有任何管理员权限,我就不能使用此功能。是否有其他方法可以解析主机/dns?

编辑:这里是截图:

EDIT2:我实际上使用的是getaddrinfo,而KIS没有“检测到任何东西”。我想使用它,但我仍然希望支持Win2K。

EDIT3:添加调试ScreenShot

EDIT4:这是我的“测试”代码:

代码语言:javascript
复制
program Project2;

{$APPTYPE CONSOLE}

uses
  Winsock;

var
    DummyWSA : WSADATA;

begin
  if WSAStartup($0202, DummyWSA) = 0 then begin
    GetHostByName ('localhost');
  end;
  readln;
end.

EDIT5: GetAddrInfo版本...

代码语言:javascript
复制
program Project2;

{$APPTYPE CONSOLE}

uses
  Winsock;

type
  PAddrInfo = ^TAddrInfo;
  TAddrInfo = packed record
    ai_flags: Integer;
    ai_family: Integer;
    ai_socktype: Integer;
    ai_protocol: Integer;
    ai_addrlen: LongWord;
    ai_canonname: Array of Char;
    ai_addr: PSOCKADDR;
    ai_next: PAddrInfo;
  end;

function getaddrinfo(const nodename: PChar; const servname : PChar; const hints: PAddrInfo; var res: PAddrInfo): Integer; stdcall; external 'ws2_32.dll' name 'getaddrinfo';
procedure freeaddrinfo(ai: PAddrInfo); stdcall; external 'ws2_32.dll' name 'freeaddrinfo';

var
  DummyWSA      : WSADATA;
  SocketHint    : PAddrInfo;
  SocketResult  : PAddrInfo;

begin
  if WSAStartup($0202, DummyWSA) = 0 then begin
    //GetHostByName ('localhost');
    getaddrinfo ('localhost', '80', SocketHint, SocketResult);
    // getaddrinfo ('localhost', NIL, SocketHint, SocketResult); // Not sure if I can NIL the port...
  end;
  readln;
end.

这个版本似乎根本没有向注册表中写入任何内容...

EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2013-03-07 03:01:52

gethostbyname()是通过DNS查询主机名的正确方式(getaddrinfo()是更好的选择,特别是当您需要支持IPv6时),而且它绝对不只限于管理员。许多应用程序使用gethostbyname() (和/或getaddrinfo()),所以卡巴斯基不太可能会阻止它。

您认为gethostbyname()为什么要创建注册表项?实际创建的是什么?它不应该创造任何东西。这可能表明一些外部代码已经连接到gethostbyname()中。

票数 15
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/15255677

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档