GetHostByName
ホスト/DNSからIPアドレスを取得するために使用しています。Kaspersky Internet Security 2013 も持っていGetHostByName
ますが、それが選択されることに気付きました。私のプロセスが でサブキーを作成しようとしているようですhklm\SYSTEM\CONTROLSET001\SERVICES\TCPIP\PARAMETERS
。これは実際には、ユーザーが管理者権限を持っていない場合、この機能を使用できないことを意味します。ホスト/DNS を解決する他の方法はありますか?
編集:ここにスクリーンショット:
EDIT2: 実際に getaddrinfo を使用しましたが、KIS は「何も検出」しませんでした。使用したいのですが、それでも Win2K のサポートが必要です。
EDIT3:デバッグスクリーンショットを追加
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.
このバージョンは、レジストリに何も書き込まないようです...