gpt4 book ai didi

delphi - 从 DNS 获取 IP 地址而不使用 GetHostByName

转载 作者:行者123 更新时间:2023-12-03 14:38:47 27 4
gpt4 key购买 nike

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

编辑:这里是屏幕截图:

enter image description here

编辑2:我实际上使用了 getaddrinfo 并且 KIS 没有“检测到任何东西”。我想使用它,但我仍然希望支持 Win2K。

EDIT3:添加了调试屏幕截图

enter image description here

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

program Project2;

{$APPTYPE CONSOLE}

uses
Winsock;

var
DummyWSA : WSADATA;

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

EDIT5:GetAddrInfo 版本...

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.

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

最佳答案

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

您为什么认为 gethostbyname() 正在创建注册表项?实际上正在创建什么?它不应该创造任何东西。这可能表明某些外部代码已挂接到 gethostbyname() 中。

关于delphi - 从 DNS 获取 IP 地址而不使用 GetHostByName,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/15255677/

27 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com